Sequence NODE_160
MediumImplement a Simple Event Emitter
JavaScript
Technical Specification
Implement a simple EventEmitter with on, off and emit methods to subscribe and trigger events.
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((listener) => listener(...args));
}
}Architectural Deep-Dive
We maintain a registry of event names to listener arrays. on adds listeners, off removes them, and emit calls them with provided arguments.