function MyStream() {
//events.EventEmitter.call(this);//call方法使得MyStream对象继承了EventEmitter对象上的方法
}
util.inherits(MyStream, events.EventEmitter);//使用inherits方法
这是网上流传已久的例子,我想构造函数中的那一句代码是必须的吗?有何作用?我发现我注掉那一行程序也是可以正常运行的~
4 回复
可以看一下 events 模块的源码:
https://github.com/joyent/node/blob/828f14556e0daeae7fdac08fceaa90952de63f73/lib/events.js#L43
EventEmitter 的初始化最初是没有内容的,后来引入 domain 特性时才增加了这个 init
https://github.com/joyent/node/commit/963459d736d6594de641aff4d8767da113359457#diff-4
也就是说,只要没有用到 domain 模块,就可以不用 call 这个 constructor
文档里有讲 domain 对 EventEmitter 的影响: http://nodejs.org/api/domain.html#domain_implicit_binding