在JavaScript中,EventEmitter类是一种创建、监听、触发自定义事件的机制。在Node.js中,EventEmitter类是events模块的一部分,但在普通的JavaScript环境中,我们可以自己实现一个简单的EventEmitter。
以下是一个基本的EventEmitter实现:
class EventEmitter {
constructor() {
this.events = {};
}
// 监听事件
on(event, callback) {
if (!this.events[event]) {
this.events[event] = [];
}
this.events[event].push(callback);
}
// 触发事件
emit(event, ...args) {
if (this.events[event]) {
this.events[event].forEach(callback => {
callback(...args);
});
}
}
}
// 使用示例
let emitter = new EventEmitter();
emitter.on('greet', (name) => {
console.log(`Hello, ${name}`);
});
emitter.emit('greet', 'World');
这个简单的EventEmitter类包含两个方法:on和emit。
- on方法用于监听事件。它接受两个参数:事件名称和回调函数。当指定的事件被触发时,回调函数将被调用。
- emit方法用于触发事件。它接受事件名称作为第一个参数,并将任何其他参数传递给回调函数。
在示例中,我们首先创建了一个新的EventEmitter实例,然后使用on方法监听了一个名为’greet’的事件。当’greet’事件被触发时,我们定义的回调函数将被调用,并打印出一条问候消息。最后,我们使用emit方法触发了’greet’事件,并传递了一个名为’World’的参数给回调函数。