公布订阅模式学习

公布订阅模式优缺点

  • 用于跨组件通信
  • 用于一对多,一处公布,多出订阅
  • 不好保护
class Pubsub {        list = {};//用于装订阅函数        listen(key, fn) {            //如果list对象中没有数组装fns给以数组用于装fns            if (!this.list[key]) {                this.list[key] = []            }            this.list[key].push(fn)        }        //公布        publish(key, ...args) {            if (!this.list[key] || this.list[key].length == 0) return;            for (let i = 0; i < this.list[key].length; i++) {                const fn = this.list[key][i];                fn.apply(this, args)            }        }        //移除        remove(key, fn) {            const fns = this.list[key];            if (!fns || fns.length == 0) return false;            for (let i = 0; i < fns.length; i++) {                const _fn = fns[i]                if (_fn == fn) {                    fns.splice(i, 1)                }            }        }    }