Node:将EventEmitter扩展为非原型对象

时间:2015-07-06 18:07:03

标签: node.js eventemitter

我一直都这么看:

Parrot.prototype.__proto__ = EventEmitter.prototype;

有了这个,每次你构造一只新的鹦鹉,都会发出嘎嘎声。

但是,假设我使用函数构造一个对象并且不打算创建多个实例:

var parrot = {
  squawk: function(whatYouSaid){
    this.emit("SQUAWK!!!!", whatYouSaid);
  }
}

我如何延长EventEmitter?我试过这个,但它没有工作:

_.extend(parrot, (new EventEmitter()));

2 个答案:

答案 0 :(得分:3)

您应该将EventEmitter.prototype扩展/分配给您的对象:

_.assign(parrot, EventEmitter.prototype);

答案 1 :(得分:-1)

util.inherits是在NodeJS中进行继承的本机API。

var EventEmitter = require('events').EventEmitter,
  util = require('util');

function Parrot(){
  EventEmitter.call(this);
  ...
}

util.inherits(Parrot, EventEmitter);

var parrot = new Parrot();

parrot.on('SQUAWK!!!!', whatYouSaid);

parrot.emit('SQUAWK!!!!', 'I said this!');

我演示了不同的继承方式:https://github.com/razvanz/nodejs-inheritance-demo