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