var events = {}; /** * 订阅 */ function on(name,self,callback){ var tuple = [self,callback] var callbacks = events[name] if(Array.isArray(callbacks)){ callbacks.push(tuple) } else{ events[name] = [tuple] } } /** * 取消订阅 */ function remove(name,self){ var callbacks = events[name] if(Array.isArray(callbacks)){ events[name] = callbacks.filter((tuple) => { return tuple[0] != self }) } } /** * 发出 */ function emit(name,data){ var callbacks = events[name] if(Array.isArray(callbacks)){ callbacks.map((tuple) =>{ var self = tuple[0] var callback = tuple[1] callback.call(self,data) }) } } exports.on = on exports.remove = remove exports.emit = emit