export default class Dispatcher { dict: Object constructor() { this.dict = new Object(); } //添加一个回调函数 add(type, callback, thisObj) { var callbacks = this.dict[type]; if (callbacks) { if (this.getIndex(callbacks, callback, thisObj) != -1) return; } else { callbacks = new Array(); this.dict[type] = callbacks; } callbacks.push({ 'callback': callback, 'thisObj': thisObj }); } getIndex(array, callback, thisObj) { for (var i = 0; i < array.length; i++) { var data = array[i]; if (data['callback'] == callback && data['thisObj'] == thisObj) { return i; } } return -1; } //删除一个回调函数 remove(type, callback, thisObj) { //没有该类型的数组 if (!this.dict[type]) { return; } var callbacks = this.dict[type]; if (!callbacks) { return; } var index = this.getIndex(callbacks, callback, thisObj); if (index != -1) { callbacks.splice(index, 1); } if (callbacks.length <= 0) { delete this.dict[type]; } } //执行回调 execute(type, params = null) { var callbacks = this.dict[type]; if (callbacks == undefined) return; for (var i = 0; i < callbacks.length; i++) { var data = callbacks[i]; var callback = data['callback'] var thisObj = data['thisObj'] callback.apply(thisObj, [params]) } } }