zoomla
Version:
16年专业研发|中文alexa排名第一的CMS品牌-基于dotNET core、功能强大,集成站群、微信开发、小程序与ERP及OA办公系统,支持国际语言和多民族语言,世界五百强与大型门户专用高端网站内核CMS系统
48 lines • 1.85 kB
JavaScript
var EventBase = function () {
this.listener = {};
};
EventBase.prototype = {
add: function (actionName, fn) {
if (typeof actionName === 'string' && typeof fn === 'function') {
//如果不存在actionName,就新建一个
if (typeof this.listener[actionName] === 'undefined') {
this.listener[actionName] = [fn];
}
//否则,直接往相应actinoName里面塞
else {
this.listener[actionName].push(fn);
}
}
},
remove: function (actionName, fn) {
var actionArray = this.listener[actionName];
if (typeof actionName === 'string' && actionArray instanceof Array) {
if (typeof fn === 'function') {
//清除actionName中对应的fn方法
for (var i = 0, len = actionArray.length; i < len; i++) {
if (actionArray[i] === fn) {
this.listener[actionName].splice(i, 1);
}
}
}
}
actionArray = null;
},
fire: function (actionName, params) {
var actionArray = this.listener[actionName];
//触发一系列actionName里的函数
if (actionArray instanceof Array) {
for (var i = 0, len = actionArray.length; i < len; i++) {
if (typeof actionArray[i] === 'function') {
actionArray[i](params);
}
}
}
actionArray = null;
}
};
var eventBase = new EventBase();
//--------------------------------------------------------------------
//eventBase.add("test", function (params) { console.log(params); });
//eventBase.fire("test", { "test": "test1" });
//eventBase.fire("test", "test2");