class myEventEmitter{
constoesr(){
this.eventMap = {};
}
on(type,handler){
if(!(handler instanceof Function)){
throw new Error("错了,传函数")
}
if(!this.eventMap[type]){
this.eventMap[type] = []
}
this.eventMap[type].push(handler)
}
emit(type,params){
if(this.eventMap[type]){
this.eventMap[type].forEach((handler,index)=>{
handler(params)
})
}
}
off(type,handler){
if(this.eventMap[type]){
this.eventMap[type].splice(this.eventMap[type].indexOf(handler)>>>0,1)
}
}
}
使用
const myEvent = new myEventEmitter();
const testHandler = function (params) {
console.log('触发',params)
}
myEvent.on('test',testHandler);
myEvent.emit('test','newState');