2013-08-08 15 views
5

Próbuję zaimplementować metodę klasy bazowej, która ma tę samą logikę dla wszystkich klas potomnych, ale użyje niektórych ze zmiennych, które są dla nich specyficzne.Uzyskiwanie dostępu do prototypu klasy potomnej z klasy nadrzędnej

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()); 

Ostatni wiersz drukuje bar, ale getFoo() drukuje również Called class: B. Zastanawiam się, skoro mam dostęp do konstruktora dziecka, czy istnieje sposób na uzyskanie dostępu do jego prototypu?

+0

Umieszczaj tylko funkcje na prototypie – Esailija

Odpowiedz

5

require('util').inherits resetuje B.prototype do nowego obiektu, który dziedziczy A.
Wszystkie właściwości ustawione na starym prototypie zostaną utracone.

Jeśli ustawisz B.prototype.foopo dzwoniąc pod numer inherits(), będzie działać poprawnie.

+0

Rozumiem. Dzięki! – klkvsk

Powiązane problemy