util.inherits如何影响原型链?

时间:2014-04-01 16:55:42

标签: javascript node.js inheritance prototype

在这种模式中:

Function ConstrA () {
    EventEmitter.call(this);
}
util.inherits(ConstrA, EventEmitter);

var obj = new ConstrA();

ConstrA和obj将拥有自己的原型链,而无需调用util.inherits。

util.inherits是否为ConstrA创建第二个原型链或替换当前的原型链,还是只将EventEmitter原型链的属性(自己的和继承的)添加到ConstrA的原型中?

1 个答案:

答案 0 :(得分:2)

util.inherits用一个对象覆盖构造函数的原型,该对象的原型设置为你继承的构造函数的原型。

如果你想从另一个对象继承你的原型,然后在自定义构造函数的原型中添加其他方法,你需要确保在定义任何其他原型方法之前在自定义构造函数上调用util.inherits

util.inherits的node.js源非常简单。看看你自己!

https://github.com/joyent/node/blob/490d5ab7808aedb998d1f4f933bf3de748758f62/lib/util.js#L631

然后,您可以阅读Object.Create的MDN文档,以填补理解中的剩余空白。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create