如何在Node中添加事件对象实例?

将事件能力添加到构造函数中是可以的:

function Stream() { events.EventEmitter.call(this); } util.inherits(Stream, events.EventEmitter); 

但是如何将事件能力添加到对象实例 ? 以下代码不起作用:

 var foo = {x: 1, y: 2}; util.inherits(foo, event.EventEmitter); events.EventEmitter.call(foo); 

运行上面的代码之后, foo.on仍然是undefined 。 有没有办法inheritance或混入EventEmitter的内容?

您可以使用npm模块node.extend 。 它是jQuery $.extend一个端口,可以这样做:

 var extend = require('node.extend'), events = require('events'); extend(foo, events.EventEmitter.prototype); 

或者,如果你不想使用另一个模块,你可以使用这个:

 function extend(target) { var sources = Array.prototype.slice.call(arguments, 1); return sources.forEach(function (source) { Object.keys(source).forEach(function (key) { target[key] = source[key]; }); }), target; } var events = require('events'); var foo = {x: 1, y: 2}; extend(foo, events.EventEmitter.prototype);