define(function(require, exports, module) { var logger = require("./logger"); var indexId = 0; var getNextId = function(){ return indexId ++; } var eventClass = function(){ var eventArray = []; this.addEvent = function(name,fn){ // logger.debug(['event util addEvent',name,fn]); var evt = { name:name, fn:fn }; eventArray.push(evt); } this.removeEvent = function(name,fn){ // logger.debug(['event util removeEvent',name,fn]); var newArr = []; for(var i in eventArray){ var e = eventArray[i]; if(e.name == name && e.fn == fn){ // logger.debug("event util removeEvent found:"+name); }else{ newArr.push(e); } } eventArray = newArr; } this.trigerEvent = function(name,data){ // logger.debug(['event util trigerEvent',name,data]); for(var i in eventArray){ var e = eventArray[i]; if(e && e.name == name){ // logger.debug(["event util trigerEvent found:",name,data]); e.fn.apply(window,[data]); } } } this.getEvents = function(){ return eventArray; } }; var eventInstances = {}; /** * 创建一个时间处理器实例,传一个名字,如果name为空则实例一个,如果不为空则返回已有的实例或者新建一个 * @prama 处理器名字, * @return 事件处理实例 */ var careteEventInstance = function(name){ if(!name){ return new eventClass(); } if(name in eventInstances){ return eventInstances[name]; } var instance = new eventClass(); eventInstances[name] = instance; return instance; } module.exports = { getInstance:careteEventInstance }; window.eventUtil = module.exports; });