Sequence NODE_229
Medium

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