2013-08-08 2 views
5

Я пытаюсь реализовать метод базового класса, который имеет одну и ту же логику для всех дочерних классов, но будет использовать некоторые из их переменных, которые являются специфическими для них.Доступ к прототипу дочернего класса из родительского класса

function A() {} 
A.prototype.foo = 'bar'; 
A.prototype.getFoo = function() { 
    console.log('Called class: ' + this.constructor.name); 
    return this.foo; 
}; 

function B() {} 
B.prototype.foo = 'qaz'; 
require('util').inherits(B, A); 

console.log(B.prototype.getFoo()); 

Последняя строка печатает bar, но getFoo() также печатает Called class: B. Поэтому мне интересно, так как я могу получить доступ к конструктору дочернего элемента, есть ли у него способ доступа к прототипу ребенка?

+0

Только поставить функции на прототипе – Esailija

ответ

5

require('util').inherits сбрасывает B.prototype на новый объект, который наследует A.
Все объекты, которые вы установили на старый прототип, потеряны.

Если вы установили B.prototype.fooпосле, вызвав inherits(), он будет работать нормально.

+0

Получил его. Благодаря! – klkvsk

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