Общий шаблон следующий:
Создан временный конструктор, который наследуется от прототипа родительского конструктора. Затем прототип дочернего конструктора устанавливается на экземпляр временного конструктора.
function inherits(Child, Parent) {
var Tmp = function() {};
Tmp.prototype = Parent.prototype;
Child.prototype = new Tmp();
Child.prototype.constructor = Child;
}
Внутри дочернего конструктора вам нужно вызвать конструктор родителя:
function Child(a, b, c) {
Parent.call(this, a, b);
}
inherits(Child, Parent);
// add prototype properties here
Внутри этого вызова функции this
будет ссылаться на новый объект, который создается при вызове new Child()
, следовательно, независимо от того, какая инициализация выполняется внутри Parent
, она применяется к новому объекту, который мы передаем. *