0

我正在創建一個新的類定義Button,它擴展了EaselJS中現有的Container類。這沒有問題。不過,我還希望Button繼承超級類All,以便Button也可以訪問其.banana.eatBanana。我如何去做這件事?繼承兩個類 - Javascript

(function() { 

    function All() { 
     this.banana = 0; 
    } 
    var p = All.prototype; 

    p.eatBanana = function() { 
     alert(this.banana); 
    } 

    window.All = All; 
}()); 

(function() { 

    function Button(apple) { 
     this.apple = apple || 0; 
     this.Container_constructor(); 
    } 
    var p = createjs.extend(Button, createjs.Container); 

    p.sayHi = function() { 
     alert(this.apple + this.banana); 
    } 

    window.Button = createjs.promote(Button, 'Container'); 
}()); 
+1

不可能。最好使Button的子類的全部屬性或相反。 – Bergi 2015-02-09 21:53:37

+0

如果您的類Container從All繼承,那麼您已經可以從All類訪問函數,但是沒有一種編程語言不允許從多於一個類繼承,在大多數語言中,您都有可以實現與您一樣多的接口需要。 – Epsil0neR 2015-02-09 21:58:43

回答

1

Javascript和擴展CreateJS不支持多繼承。你可以:

  1. 重新考慮你的繼承結構
  2. 混入物成員全部到您的Button類或實例(例如有按鈕所有延伸集裝箱伸出。):Button.prototype.doSomething = All.prototype.doSomethingmyButton.doSomething = All.prototype.doSomething
  3. 將成員注入到超類中,例如由所有想要成員所在的類擴展的DisplayObject:DisplayObject.prototype.doSomething = All.prototype.doSomething
+0

感謝@gskinner爲您解答。順便說一句,非常感謝您投入CreateJS的時間和精力。 – AKG 2015-02-10 04:04:15