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

时间:2013-05-21 15:59:53

标签: javascript node.js events prototype eventemitter

有很多示例没有在自定义事件发射器构造函数中使用events.EventEmitter.call(this),而其他正在使用它(official documentation):

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中的初始化内容?

1 个答案:

答案 0 :(得分:5)

是的,是的。

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

现在,it will

  

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