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。所以我想知道,既然我可以访问孩子的构造函数,有没有办法通过它访问孩子的原型?

4

1 回答 1

5

require('util').inherits resets B.prototype to a new object that inherits A.
Any properties you set on the old prototype are lost.

If you set B.prototype.foo after calling inherits(), it will work fine.

于 2013-08-08T15:40:38.227 回答