1 var PubSub =
{
2 subscribe:
function(ev, callback) {
3 //创建 _callbacks 对象,除非它已经存在了
4 var calls =
this._callbacks || (
this._callbacks =
{});
5 //针对给定的事件 ev 创建一个数组,除非这个数组已经存在
6 //然后将回调函数追加到这个数组中
7 (
this._callbacks[ev] || (
this._callbacks[ev] =
[])).push(callback);
8 return this;
9 },
10 publish:
function() {
11 //将 arguments 对象转换为真正的数组
12 var args = Array.prototype.slice.call(arguments, 0
);
13 //拿出第1个参数,即事件名称
14 var ev =
args.shift();
15
16 //如果不存在 _callbacks 对象,则返回
17 //或者如果不包含给定事件对应的数组
18 var list, calls, i, l;
19 if (!(calls =
this._callbacks))
return this;
20 if (!(list =
this._callbacks[ev]))
return this;
21
22 //触发回调
23 for (i = 0, l = list.length; i < l; i++
) {
24 list[i].apply(
this, args);
25 }
26 return this;
27 }
28 };
29
30 //使用方法
31 PubSub.subscribe("wem",
function() {
32 alert("Wem!"
);
33 });
34
35 PubSub.publish("wem");
转载于:https://www.cnblogs.com/qzsonline/archive/2012/08/01/2618272.html