class EventEmitter {
constructor () {
this.event = {}
}
on (name, func) {
if (!this.event[name]) {
this.event[name] = []
}
this.event[name].push(func)
}
emit(name, ...agrs) {
if (this.event[name]) {
this.event[name].forEach(cb => {
cb(...agrs)
})
}
}
off(name, offcb) {
if (this.event[name]) {
let index = this.event[name].findIndex(cb => cb === offcb )
this.event[name].splice(index, 1)
if (!this.event[name].length) {
delete this.event[name]
}
}
}
}
let eventBus = new EventEmitter()
eventBus.on('speaker', (data) => {
console.log('监听成功,它说:', data)
})
eventBus.emit('speaker', '都让开,我要说话')
eventBus.off('speaker')
eventBus.emit('speaker', '都让开,我要说话1,有人回答麽???')