// 事件类
class EventEmitter {
constructor () {
this.events = { } // 事件队列,保存着每一种事件的处理程序
}
on (type, callback) { // type 要绑定的事件名字, callback 处理程序
if (this.events[type]) {// 如果事件队列中有这个事件
// 将此次绑定的处理程序放入进去
this.events[type].push(callback.bind(this))
return false
}
// 如果没有这个事件,新建
this.events[type] = [callback.bind(this)]
}
emit (type, ...args) {
// 触发事件的时候如果没有事件,报错
if (!this.events[type]) {
console.error('type event is not found')
}else {
// 挨个执行队列中的处理程序
this.events[type].forEach(callback => {
callback(...args)
});
}
}
}
let bus = new EventEmitter()
bus.on('play', (num1, num2) => {
alert(123)
})
bus.on('play', (num1, num2) => {
alert(456)
alert(num1 + num2)
})
bus.emit('play', 1, 2)