封装on emit off方法(observer)

let eventList = [];
绑定事件
on(eventName,cb){}

第一步判断当前事件是否存在 如果不存在 初始化一下 key:[] 然后再将cb push到数据中去即可
 
const $on=(eventName,cb)=>{
  if(!eventList[eventName]){
    eventList[eventName] = [];
 }
 eventList[eventName].push(cb)
}
 
 
触发事件
emit(eventName,params){}

第一步判断当前事件是否存在 如果存在 遍历数组中的所有函数调用即可 如果params如果存在 将params传递到函数中
 
const $emit = (eventName,params)=>{
  if(eventList[eventName]){
    let arr = eventList[eventName];
    arr.map((cb)=>{
      cb(params)
    })
  }
}
 
解绑事件
off(eventName,cb){}

第一步判断当前事件是否存在 如果存在 再次判断第二个参数是否存在 如果存在将这个cb从当前数组中移除
如果第二个参数不存在 清空数据
 
const $off = (eventName,cb)=>{
  if(cb){
    let index = eventList[eventName].indexOf(cb);
    eventList[eventName].splice(index,1);
  }else{
    eventList[eventName].length = 0;
  }
}
原文地址:https://www.cnblogs.com/shy0113/p/10508489.html