node.js事件发射器是否必须绑定到自定义对象才能有效地使用它们?

在node.js中,为什么事件发射器的一些例子看起来很简单:

EventEmitter = require("events").EventEmitter; ee1 = new EventEmitter; 

然后ee1被用来发送和收听事件。

还有一些例子是这样的:

 EventEmitter = require("events").EventEmitter; util = require("util"); MyFunc = function () EventEmitter.call(this); } util.inherit(MyFunc, EventEmitter); ee2 = new MyFunc(); 

然后ee2被用来发射和听事件。

你可以使用ee1来处理所有的事件(无论你想要的地方,例如在你的自定义对象中)。 将事件发射器原型绑定到您自己的自定义对象/函数的原因是什么?

这样做本质上没有什么问题 ,但是如果您打算继续使用ee1的path,我build议您查看事件聚合器模式 。 通过一些小心的计划,你应该能够避免单个事件总线的一些陷阱。

就个人而言,我一直喜欢ee2的做事方式。 我认为它使事情更有组织(封装)。

这个想法是你的对象一个EventEmitter 。 使用你的名字,这可以让你做这样的事情:

 ee2.on('some-event', ...); 

同时也正常使用你的对象:

 ee2.myOwnFunction();