创build自定义EventEmitter时是否需要events.EventEmitter.call(this)?

在自定义事件发射器构造函数中有很多不使用events.EventEmitter.call(this)的例子,而其他的则使用它( 官方文档 ):

 var events = require('events') , util = require('util'); var MyEmitter = function () { events.EventEmitter.call(this); }; util.inherits(MyEmitter, events.EventEmitter); MyEmitter.prototype.write = function () { this.emit('tick'); }; 

随着我对JavaScript的基本理解,我不知道是否需要它。 是否需要调用EventEmitter初始化的东西?

是的。

在节点0.10之前,如果你忘记了,它不会中断。

现在, 它将 :

EventEmitter构造函数现在初始化各种属性。 作为一个OOPinheritance父项,它仍然可以正常工作,但是你必须正确地inheritance。 扩展EventEmitter类时,Broken-Style JSinheritance模式将不起作用。 这种inheritance风格从来没有被支持,但在0.10之前,它并没有真正的破坏。