8c1dea14

Нет Множественного Наследования


Некоторые объектно-ориентированные языки разрешают множественное наследование. То есть, объект может наследовать свойства и значения из не связанных между собой родительских объектов. JavaScript не поддерживает множественное наследование.


Наследование значений свойств возникает на этапе прогона программы, когда JavaScript ищет значение по цепочке прототипов объекта. Поскольку объект имеет единственный ассоциированный прототип, JavaScript не может динамически наследовать из более чем одной цепочки прототипов.

В JavaScript Вы можете иметь несколько вызовов одного конструктора функции внутри другого. Это создаёт иллюзию множественного наследования. Например, рассмотрим следующие операторы:

function Hobbyist (hobby) {

   this.hobby = hobby "scuba";

}

function Engineer (name, projs, mach, hobby) {

   this.base1 = WorkerBee;

   this.base1(name, "engineering", projs);

   this.base2 = Hobbyist;

   this.base2(hobby);

   this.machine = mach "";

}

Engineer.prototype = new WorkerBee;

dennis = new Engineer("Doe, Dennis", ["collabra"], "hugo")

Далее предположим, что имеется определение WorkerBee, такое как ранее в этой главе. В этом случае объект dennis имеет три свойства:

dennis.name == "Doe, Dennis"

dennis.dept == "engineering"

dennis.projects == ["collabra"]

dennis.machine == "hugo"

dennis.hobby == "scuba"

Итак, dennis получает свойство hobby от конструктора Hobbyist. Однако предположим, что Вы затем добавляете свойство в прототип конструктора Hobbyist:

Hobbyist.prototype.equipment = ["mask", "fins", "regulator", "bcd"]

Объект dennis не наследует это новое свойство.



              

Copyright © 2000 Все Права Зарезервированы.

Дата последнего обновления 28 сентября 2000 года.



Содержание раздела