封装观察者模式$on(),$emit(),$off()。

let eventList = {};


const $on=(eventName,cb)=>{

    if(!eventList[eventName]){
        eventList[eventName] = [];
    }
    eventList[eventName].push(cb)
}




const $emit = (eventName,params)=>{

    if(eventList[eventName]){
        let arr = eventList[eventName];
        arr.map((cb)=>{
            cb(params)
        })
    }
}


const $off = (eventName,cb)=>{
    if(eventList[eventName]){
        if(cb){
            let index = eventList[eventName].indexOf(cb);
            eventList[eventName].splice(index,1);

        }else{
            eventList[eventName].length = 0;
            
        }
    }
}

使用的时候把需要的部分导出即可。可以用于vue中的非父子组件之间的传值。

posted @ 2019-02-23 12:04  PrayLs  阅读(411)  评论(0编辑  收藏  举报