Sequence NODE_160
Medium

Implement 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.