eventBus原理

230 阅读1分钟
const vm = new EventEmitter()

    function EventEmitter() {
      this.callbackList = {
        // a:[] //注册事件存储
      }
    }
    // 1.注册事件
    // event-事件名  callback-处理事件函数
    EventEmitter.prototype.$on = function (event, callback) {
      if (!this.callbackList[event]) { // 判断是否注册事件
        this.callbackList[event] = []
      }
      this.callbackList[event].push(callback)
    }

    // 2.触发事件
    // event-触发事件 data-传递参数
    EventEmitter.prototype.$emit = function (event, data) {
      const list = this.callbackList[event]
      if (list) { // 判断注册事件数组是否为空
        list.forEach(Fun => {
          Fun(data)
        });
      } else {
        console.log("请注册事件")
      }
    }