Observer 事件机制封装

2020-03-11  本文已影响0人  鹤仔z

目标:封装一个对象,使其拥有 $on , $emit$off 方法,进行事件的订阅、抛发和移除。

实现过程如下:

const eventList = {}

const $on = function(eventName,callback){
    if(!eventList[eventName]){
        eventList[eventName] = [];
    }
    eventList[eventName].push(callback);
}

const $emit = function(eventName,params){
    if(eventList[eventName]){
        var arr = eventList[eventName];
        arr.forEach((cb)=>{
            cb(params)
        })
    }
}

const $off = function(eventName,callback){
    if(eventList[eventName]){
        if(callback){
            var index = eventList[eventName].indexOf(callback);
            eventList[eventName].splice(index,1);
        }else{
            eventList[eventName].length = 0;
        }
    }
}


export default {
    $on,
    $emit,
    $off
}
上一篇下一篇

猜你喜欢

热点阅读