请实现一个EventEmitter
在前端开发中,EventEmitter
是一个非常常见的概念,特别是在 Node.js 和一些前端框架(如 Angular,Vue.js 中的事件系统等)中。以下是一个简单的 EventEmitter
类的实现,使用 JavaScript 编写:
class EventEmitter {
constructor() {
this.events = {};
}
// 监听事件
on(eventName, callback) {
if (!this.events[eventName]) {
this.events[eventName] = [];
}
this.events[eventName].push(callback);
}
// 触发事件
emit(eventName, ...args) {
if (this.events[eventName]) {
this.events[eventName].forEach(callback => {
callback(...args);
});
}
}
// 移除事件监听器
off(eventName, callback) {
if (this.events[eventName]) {
this.events[eventName] = this.events[eventName].filter(cb => cb !== callback);
}
}
}
这个 EventEmitter
类有以下方法:
on(eventName, callback)
: 用于注册一个事件监听器。当指定的事件被触发时,将调用提供的回调函数。emit(eventName, ...args)
: 用于触发一个事件。所有注册到该事件的回调函数都将被调用,并传入提供的参数。off(eventName, callback)
: 用于移除一个事件监听器。这将从指定事件的监听器列表中删除提供的回调函数。
你可以这样使用这个 EventEmitter
类:
const eventEmitter = new EventEmitter();
// 监听一个名为 'message' 的事件
eventEmitter.on('message', (message) => {
console.log('Received message:', message);
});
// 触发 'message' 事件,并传入一个字符串参数
eventEmitter.emit('message', 'Hello, World!'); // 输出: Received message: Hello, World!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏