Sequence NODE_229
MediumImplement a Simple EventEmitter
Node.js
Technical Specification
Implement a minimal EventEmitter class with on, off, and emit methods (without using built-in events module).
Input/Output Samples
Input:em.on("data", fn); em.emit("data", 123);
Output:fn called with 123
Optimal Logic Path
class EventEmitter {
constructor() {
this.events = {};
}
on(event, listener) {
(this.events[event] ||= []).push(listener);
}
off(event, listener) {
this.events[event] =
(this.events[event] || []).filter((l) => l !== listener);
}
emit(event, ...args) {
(this.events[event] || []).forEach((l) => l(...args));
}
}
module.exports = EventEmitter;Architectural Deep-Dive
We mimic Node's events pattern by maintaining arrays of listeners per event key.