当前位置: 首页 > Web前端 > JavaScript

前端设计模式:发布订阅模式

时间:2023-03-27 16:16:23 JavaScript

//发布订阅模式==>一对多关系;本质是回调;参考内置dom2事件//DOM.addEventListener('click',function(){})//DOM.addEventListener('click',function(){})classEvent{//subscribe||listenlisten(event,cb){if(!this.obj[event]){this.obj[event]=[];}this.obj[event].push(cb)}//触发函数trigger(key,...agrs){this.obj[key].forEach(fn=>{fn.apply(this,agrs);})}}classSalesOfficeextendsEvent{obj={};构造函数(){超级();}}constsalesOffice=newSalesOffice()//绑定事件salesOffice.listen('click',function(a,b){console.log('click',a,b,this===salesOffice);})salesOffice.listen('click',(a,b)=>{console.log('click',a,b);})salesOffice.listen('move',(a,b)=>{console.log('move',a,b);})//触发事件constreminder=event=>{salesOffice.trigger(event,'aa','bb');};remind('click')remind('move')