JavaScript手写系列(三)(手写发布订阅)

25 阅读1分钟

发布订阅就是:无论何时当我们在a处发送了消息,订阅过a处消息的地方都可以接收到发送的消息。

        let corp = {}   // 自定义一个对象
        // 这里放一个列表用来缓存回调函数
        corp.list = []
        // 去订阅事件
        corp.on = function (fn) {
            // 二话不说, 直接把fn先存到列表中
            this.list.push(fn)
        };
        // 发布事件
        corp.emit = function () {
            // 当发布的时候再把列表里存的函数依次执行
            this.list.forEach(cb => {
                cb.apply(this, arguments)
            })
        }

发布订阅其实是一种对象间一对多的依赖关系, 当一个对象的状态发生改变时, 所有依赖于它的对象都将得到状态改变的通知。