我经常编写一些小型的库和模块,通常这些库和模块都与一些事件相关联。 目前为止,我的编写方式通常是以下方式(大大简化):
Library.prototype.on = function(event, callback){
self = this;
self.events[event] = callback;
}
那么用户可能会执行以下操作:
Library.on('foo',function(){
console.log('bar');
});
有更好的、性能更高的方法来实现这个吗?还是这是一种标准的实现方式?我想要一个简单的API,可以将其放入任何JS项目中以支持此行为。
removeListener('event')
的预期用法可能类似于jQuery中使用unbind('event')
,它会删除所有引用(除非你添加一个像event.foo
这样的命名空间)。 - Oscar GodsonremoveListener(ev)
只会因为巧合而删除最后一个监听器(索引为-1,因此它会删除最后一个项目)。你应该调用removeListener(ev, handler)
。 - Raynos