在这种模式中:
Function ConstrA () {
EventEmitter.call(this);
}
util.inherits(ConstrA, EventEmitter);
var obj = new ConstrA();
ConstrA和obj将拥有自己的原型链,而无需调用util.inherits。
util.inherits是否为ConstrA创建第二个原型链或替换当前的原型链,还是只将EventEmitter原型链的属性(自己的和继承的)添加到ConstrA的原型中?
答案 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