Наследование JavaScript с конструкторами, у которых есть параметры

Я новичок в JavaScript и пытаюсь понять наследование, когда у меня есть конструктор, который принимает параметры.

Предположим, у меня есть базовый объект с именем Base:

function Base(param1, param2) {
   // Constructor for Base that does something with params
}

Мне нужен еще один объект, например, с именем BaseChild, который наследуется от Base, а затем еще один объект с именем Child, который наследуется от BaseChild.

Как мне создать конструкторы для BaseChild и Child с использованием базового JavaScript (т. е. без специальных подключаемых модулей)?


Примечание:

Я думал, что вы сможете создать BaseChild следующим образом:

var BaseChild = new Base(param1, param2);

Но у меня нет значений для param1 или param2 в BaseChild, только в Child. Я надеюсь это имеет смысл!.


person Umbungu    schedule 07.08.2013    source источник


Ответы (1)


// define the Base Class
function Base() {
   // your awesome code here
}

// define the BaseChild class
function BaseChild() {
  // Call the parent constructor
  Base.call(this);
}

// define the Child class
function Child() {
  // Call the parent constructor
  BaseChild.call(this);
}


// inherit Base
BaseChild.prototype = new Base();

// correct the constructor pointer because it points to Base
BaseChild.prototype.constructor = BaseChild;

// inherit BaseChild
Child.prototype = new BaseChild();

// correct the constructor pointer because it points to BaseChild
Child.prototype.constructor = BaseChild;

альтернативный подход с использованием Object.create

BaseChild.prototype = Object.create(Base.prototype);
Child.prototype = Object.create(BaseChild.prototype);
person achudars    schedule 07.08.2013