UNPKG

zoomla

Version:

16年专业研发|中文alexa排名第一的CMS品牌-基于dotNET core、功能强大,集成站群、微信开发、小程序与ERP及OA办公系统,支持国际语言和多民族语言,世界五百强与大型门户专用高端网站内核CMS系统

48 lines 1.85 kB
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");