//EventCenter.js
window.EventCenter = {
_events = {},
addListener:function(eventname, callback, target) {
if (eventname == undefined || callback == undefined || target == undefined) {
console.warn("addListener undefined");
return;
}
if (this._events[eventname] == undefined) {
this._events[eventname] = [];
}
this._events[eventname].push({callback: callback, target: target});
},
removeListener:function(eventname, callback, target) {
var handlers = this._events[eventname];
for (var i = handlers.length - 1; i >= 0; i--) {
var handler = handlers[i];
if (target == handler.target && callback.toString() == handler.callback.toString()) {
this._events[eventname].splice(i , 1);
}
}
},
removeAllListener:function(eventname) {
if (this._events[eventname] == undefined) {
var handlers = this._events[eventname];
for (var i = 0; i < handlers.length; i++) {
handlers[i] = null;
}
}
},
resetAllListener:function() {
for (const key int this._events) {
if (this._events.hasOwnProperty(key)) {
delete this._events[key];
}
}
},
dispatchEvent:function(eventname, data) {
console.log("eventname = " + eventname);
if (this._events[eventname] != undefined) {
var handlers = this._events[eventname];
for (var i = 0; i < handlers.length; i++) {
var handler = handlers[i];
handler.callback.call(handler.target, data);
}
}
},
};
使用 EventCenter :
添加事件监听:EventCenter.addListener("ëventName", this.callback, this);
销毁事件监听:EventCenter.removeListener("ëventName", this.callback, this);
发送事件消息:EventCenter.dispatchEvent("ëventName", data);