酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

JavaScript:实现支持多监听器与取消注册的发布 - 订阅模式

```javascript class Listener { constructor() {} handle(eventData) { console.log(`Received event: ${eventData}`); } } class EventEmitter { constructor() { this.listeners = {}; } on(eventName, listener) { if (!this.listeners[eventName]) { this.listeners[eventName] = []; } this.listeners[eventName].push(listener); } emit(eventName, eventData) { if (this.listeners[eventName]) { for (let listener of this.listeners[eventName]) { listener.handle(eventData); } } } off(eventName, listenerToRemove) { if (this.listeners[eventName]) { this.listeners[eventName] = this.listeners[eventName].filter( (listener) => listener!== listenerToRemove ); } } } // 测试 const emitter = new EventEmitter(); const listener1 = new Listener(); const listener2 = new Listener(); emitter.on('myEvent', listener1); emitter.on('myEvent', listener2); emitter.emit('myEvent', 'Hello, World!'); emitter.off('myEvent', listener1); emitter.emit('myEvent', 'Another message'); ``` ######[AI写代码神器 | 320点数解答 | 2024-11-09 00:55:08]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]