const eventHub = { // 任务队列 map: {}, // 入队 on:(name, fn)=>{ eventHub.map[name] = eventHub.map[name] || [] eventHub.map[name].push(fn) }, // 或者称为trigger,出发队列中事件 emit: (name, data)=>{ const q = eventHub.map[name] if(!q){return} q.map(fn =>fn.call(undefined, data)) }, // 出队 off: (name, fn)=>{ const q = eventHub.map[name] if(!q){return} const index = q.indexOf(fn) if(index < 0){return} q.splice(index, 1) }}// 监听事件,把事件放到任务队列里面eventHub.on('click', console.log)// 取消事件eventHub.off('click', console.log)// 触发事件setTimeout(()=>{ eventHub.emit('click', 'pank')},3000)