我正在尝试实现一个基类方法,它对所有子类具有相同的逻辑,但会使用一些特定于它们的变量。
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 :(得分:5)
require('util').inherits
将B.prototype
重置为继承A
的新对象
您在旧原型上设置的任何属性都将丢失。
如果您在调用B.prototype.foo
后设置inherits()
,则可以正常使用。