在Node.js文档中我们可以看到:
var util = require("util");
var events = require("events");
function MyStream() {
events.EventEmitter.call(this);
}
util.inherits(MyStream, events.EventEmitter);
var stream = new MyStream();
Run Code Online (Sandbox Code Playgroud)
它是否相同:
function MyStream2() {
}
//MyStream2 = new events.EventEmitter; WRONG. Thank you @Esailija
MyStream2.prototype = new events.EventEmitter;
var stream2 = new MyStream2();
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
如果我们编辑您的代码是有效的,那就是:
MyStream2.prototype = new events.EventEmitter;
Run Code Online (Sandbox Code Playgroud)
仍然会有一些差异:
在您的版本中MyStream2.prototype.constructor === events.EventEmitter,有inherits,MyStream2.prototype.constructor === MyStream2
您的版本调用events.EventEmitter构造函数可能有副作用,而inherits使用Object.create不调用构造函数.
与链接原型之间的差异无关,但是在调用子构造函数时,您的版本不会调用父构造函数.因此,function MyStream2() { events.EventEmitter.call(this); }在调用子构造函数时,仍应正确建立初始状态.
| 归档时间: |
|
| 查看次数: |
896 次 |
| 最近记录: |