手写一个简单vue2中的事件总线类

69 阅读1分钟
// 定义一个简单的事件总线类
class EventBus {
  constructor() {
    this.events = {};
  }
  // 订阅事件
  subscribe(event, callback) {
    if (!this.events[event]) {
      this.events[event] = [];
    }
    this.events[event].push(callback);
  }
  // 发布事件
  publish(event, ...args) {
    if (this.events[event]) {
      this.events[event].forEach(callback => {
        callback(...args);
      });
    }
  }
  // 取消订阅事件
  unsubscribe(event, callback) {
    if (this.events[event]) {
      this.events[event] = this.events[event].filter(cb => cb !== callback);
    }
  }
}
const eventBus = new EventBus();
// 订阅事件
eventBus.subscribe('message', (data) => {
  console.log('Received message:', data);
});
// 发布事件
eventBus.publish('message', 'Hello, EventBus!'); //