On the Node.js documentation我们可以看到:
var util = require("util");
var events = require("events");
function MyStream() {
events.EventEmitter.call(this);
}
util.inherits(MyStream, events.EventEmitter);
var stream = new MyStream();
是否与:
相同function MyStream2() {
}
//MyStream2 = new events.EventEmitter; WRONG. Thank you @Esailija
MyStream2.prototype = new events.EventEmitter;
var stream2 = new MyStream2();
谢谢:)
答案 0 :(得分:7)
如果我们编辑您的代码,那就是:
MyStream2.prototype = new events.EventEmitter;
仍然会有一些差异:
在您的版本MyStream2.prototype.constructor === events.EventEmitter
中,inherits
,MyStream2.prototype.constructor === MyStream2
您的版本调用可能有副作用的events.EventEmitter
构造函数。而inherits
使用不调用构造函数的Object.create
。
与链接原型之间的差异无关,但是在调用子构造函数时,您的版本不会调用父构造函数。所以当调用子构造函数时,它应该仍然有function MyStream2() { events.EventEmitter.call(this); }
来正确建立初始状态。