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

gre*_*emo 5 javascript events prototype node.js eventemitter

有很多示例没有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');
};
Run Code Online (Sandbox Code Playgroud)

根据我对JavaScript的基本理解,我不知道是否需要它.是否需要在内部初始化内容EventEmitter

SLa*_*aks 5

是的.

在节点0.10之前,如果忘记它,它就不会中断.

现在,它将:

EventEmitter构造函数现在初始化各种属性.它仍然可以作为OOP继承父级正常工作,但您必须正确地继承.扩展EventEmitter类时,Broken-Style JS继承模式将不起作用.从未支持此继承样式,但在0.10之前,它实际上并未中断.