>[danger]手写一个简单的eventemitter 下面是一个简单的 JavaScript 代码示例,用于手动实现一个简单的 EventEmitter: ```javascript class EventEmitter { constructor() { // 存储事件监听器的对象,键为事件名,值为监听器数组 this.listeners = {}; } // 添加事件监听器 on(event, listener) { if (!this.listeners[event]) { this.listeners[event] = []; } this.listeners[event].push(listener); } // 触发事件 emit(event, ...args) { const eventListeners = this.listeners[event]; if (eventListeners) { eventListeners.forEach((listener) => { listener.apply(null, args); }); } } // 移除事件监听器 off(event, listener) { const eventListeners = this.listeners[event]; if (eventListeners) { this.listeners[event] = eventListeners.filter((l) => l !== listener); } } } // 使用示例 const emitter = new EventEmitter(); // 添加事件监听器 const listener1 = () => { console.log('Event 1 occurred'); }; emitter.on('event1', listener1); const listener2 = (data) => { console.log('Event 2 occurred with data:', data); }; emitter.on('event2', listener2); // 触发事件 emitter.emit('event1'); // 输出: Event 1 occurred emitter.emit('event2', 'Some data'); // 输出: Event 2 occurred with data: Some data // 移除事件监听器 emitter.off('event1', listener1); emitter.emit('event1'); // 无输出,listener1 已被移除 ``` 以上代码定义了一个 `EventEmitter` 类,该类具有 `on`、`emit` 和 `off` 方法,分别用于添加事件监听器、触发事件以及移除事件监听器。