node 中 on emit off 事件的封装

1.on事件

var eventList= {};

const $on = ( eventName, cb ){
  if(!eventList[eventName]){ //判断事件名称是否存在
    eventList[eventName] = []; //不存在创建一个空的数组
  }
       eventList[eventName].push(cb)//将事件push入数组中      
}

2.emit

const $emit = (eventName,params)=>{
    if(!eventList[eventName])return;//事件名称不存在的话就不在运行
    
    let arr = eventList[eventName];
        arr.map((cb)=>{ //通过遍历将数组中的每个事件都触发
            cb(params)
        })
}

3.off

const $off = (eventName,cb)=>{
    if(!eventList[eventName])return;//事件名称不存在就不在运行
        if(cb){//判断事件是否存在 存在则删除该事件 不存在则清空所有事件
            let index = eventList[eventName].indexOf(cb);
            eventList[eventName].splice(index,1);

        }else{
            eventList[eventName] = [];
            
        }
}

 

posted @ 2019-03-16 16:50  举个栗子!  阅读(359)  评论(0)    收藏  举报