我发现我读到的有关EventEmitter(书籍或互联网)的所有内容都使用了继承实现。
除了更复杂(使用Util.inherits,在类中调用EventEmitter构造函数)之外,你会遇到多重继承的问题(除非你添加更多的卷积),并且我发现的类范围事件的灵活性较低。
这张照片出了什么问题?:
EventEmitter = require('events').EventEmitter;
function DummyContainer()
{
this.Events = new EventEmitter();
}
DummyContainer.prototype.ClassEvents = new EventEmitter();
Test1 = new DummyContainer();
Test1.Events.on('Test', function() {
console.log('Test');
});
Test1.ClassEvents.on('ClassTest', function() {
console.log('ClassTest');
});
Test2 = new DummyContainer();
Test1.Events.emit('Test');
Test2.ClassEvents.emit('ClassTest');
在我看来,上面的内容更具可读性,不需要任何多重继承的解决方法(因为它首先不使用继承)并且作为奖励,可以让您轻松区分在全班和实例活动之间。
如果不使用它,除了必须输入更多内容之外,是否有任何动机使用继承方式而不是这个?