Javascript 一个简单的事件系统|如何?

Javascript 一个简单的事件系统|如何?,javascript,events,backbone.js,Javascript,Events,Backbone.js,我想实现这个接口 addListener(name, callback); removeListener(name, [callback]); // callback is optional trigger(name); 所有事件都将在内部事件总线上触发 var bus = {} 这不是接口的一部分 这是我能想象到的最简单的界面,它实际上很有用 然而,我仍然不知道如何在概念上实现这些接口。我已经仔细阅读了,但是不太明白他们是如何实现这个核心功能的 我只想写一个10-100行的快速事件系统,它

我想实现这个接口

addListener(name, callback);
removeListener(name, [callback]); // callback is optional
trigger(name);
所有事件都将在内部事件总线上触发

var bus = {}
这不是接口的一部分

这是我能想象到的最简单的界面,它实际上很有用

然而,我仍然不知道如何在概念上实现这些接口。我已经仔细阅读了,但是不太明白他们是如何实现这个核心功能的


我只想写一个10-100行的快速事件系统,它尽可能简单,并且基于更复杂的主干事件系统。

您可以使用主干.Events模块

无耻地从

您可以使用应用程序级事件聚合器:

MyApp = {};
MyApp.vent = _.extend({}, Backbone.Events);

MyApp.vent.on("some:event", function(){
  alert("some event was fired!");
});

MyApp.vent.trigger("some:event");

查看最小事件总线库。它目前有不同的API,但可能正是您想要的

var bus = Minibus.create();
bus.on(name, callback);  // add listener
bus.emit(name);          // trigger event
bus.off(name);           // remove listener

事件名称应该是“总线”对象的属性。每个事件属性的值应该是触发事件时要调用的函数数组。“addListener”函数应该将处理程序添加到相应属性的处理程序数组中。“trigger”函数应该一个接一个地调用数组中的每个函数。@pure_代码:很简单:-)进一步看,这就是主干事件系统所做的,它只是添加了两个额外的接口-以空格分隔的事件和一个对象文字符号来将事件连接到回调。这是一个常见的习惯用法,一个聚合器或总线可以帮助您。因此,我只是在实现中构建了一个总线。