如何实现一个 EventEmitter?

在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’的参数给回调函数。

发表评论

后才能评论