0

Я создаю новое определение класса Button, которое расширяет существующий класс Container в EaselJS. С этим нет никаких проблем. Однако мне бы хотелось, чтобы 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

Невозможно. Лучше сделать свойство All all подкласса Button или наоборот. – Bergi

+0

Если ваш класс Container наследуется от All, то у вас уже есть доступ к функции из класса All, но ни один язык программирования не позволяет наследовать более чем из 1 класса, на большинстве языков у вас есть интерфейсы, которые вы можете реализовать столько, сколько вы необходимость. – Epsil0neR

ответ

1

Javascript, а также по расширению CreateJS, не поддерживает множественное наследование. Вы можете:

  1. пересмотреть структуру наследования
  2. смесь в члены из всех в классе Button или экземпляры (ех есть кнопка расширения Все которая проходит Container.): Button.prototype.doSomething = All.prototype.doSomething или myButton.doSomething = All.prototype.doSomething.
  3. вводят элементы в суперклассу, такую ​​как DisplayObject, который расширяется всеми классами, в которых вы хотите, чтобы их участники: DisplayObject.prototype.doSomething = All.prototype.doSomething.
+0

Спасибо @gskinner за ваш ответ. Кстати, большое вам спасибо за время и усилия, которые вы вложили в CreateJS. – AKG

 Смежные вопросы

  • Нет связанных вопросов^_^