发布订阅模式-手写eventBus

79 阅读1分钟
class eventBus{
    constructor(){
        this.events = {};
    }
    // 订阅方法
    on(name,callBack){
        if(!this.events[name]){
            this.events[name] = [callBack];
        }else{
            this.events[name].push(callBack);
        }
    }
    // 发布方法
    exmit(name,parms){
        this.events[name].forEach((callBack)=>{
            callBack(parms);
        })
    }
    // 取消订阅事件
    unon(name,callBack){
        this.events[name].filter((cb)=>{
            return cb!=callBack;
        })
    }
}

// 实例化
const yya = new eventBus();

// 订阅
yya.on('click',function(data){
    alert(data)
})
// 发布
yya.exmit('click','111')