封装on,emit,off事件

事件绑定是一个对象绑定多个事件函数,因此是一对多的模式,即观察者模式,数据类型采用对象
 
封装on:
思路:创建一个事件仓库存放事件:
判断当前事件是否存在,不存在,初始化一下,然后将回调函数push到数组中;
let eventCon = {};
const eventOn = (eventName,callback)=>{
    if(!eventCon[eventName]){
         eventCon[eventName] = [];
    }
    eventCon[eventName].push(callback)
}

封装emit:
思路:判断当前事件是否存在,如果存在,遍历数组的函数调用即可,如果第二个参数存在,将参数传递到函数中;
const eventEmit = (eventName,params)=>{
    if(eventCon[eventName]){
        let arr = eventCon[eventName]
        arr.map((callback)=>{
            callback(params)
        })
    }
}
 
封装off:
思路:判断当前事件是否存在,如果存在,判断第二个参数是否存在,如果第二个参数存在,将callback从当前数组移除;不存在,
清除数组。
const eventOff = (eventName,callback)=>{
    if(eventCon[eventName]){
        if(callback){
            let index = eventCon[eventName].indexof(callback);
            eventCon[eventName].splice(index,1);
        }else{
            eventCon[eventName].length = 0;
        }
    }
}


原文地址:https://www.cnblogs.com/kinoko-1009/p/10501513.html