节点:将EventEmitter扩展到非原型对象

我总是看到这个:

Parrot.prototype.__proto__ = EventEmitter.prototype; 

有了这个,每一次你build造一个新的鹦鹉,它可以squawk。

但是,假设我构造了一个具有函数的对象,并且不打算创build多个实例:

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

我将如何使这个扩展EventEmitter ? 我试过这个,但没有成功:

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

你应该扩展/分配EventEmitter.prototype到你的对象:

 _.assign(parrot, EventEmitter.prototype); 

util.inherits是在util.inherits中进行inheritance的本地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!'); 

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