CP141 · EventEmitter 事件总线

中等前端手撕核心代码模式仅 JavaScript设计闭包时限 1000 ms(参考)
题目描述

实现 createEmitter():返回带 on(event, name) / once(event, name) / off(event, name) / emit(event, payload) 的事件总线。监听器用名称字符串标识(脚手架把名称映射为把 "名称:payload" 追加到日志的函数)。emit 按注册顺序调用所有监听器;once 的监听器触发一次后自动移除;off 移除该事件下同名的所有监听器;emit 无监听器时什么也不做。本题为「核心代码模式 · 仅 JavaScript」:模板已内置 JSON 读入与输出脚手架,只需补全指定函数。

输入描述

一行 JSON:{"ops": [["on", event, name] | ["once", event, name] | ["off", event, name] | ["emit", event, payload] ...]}。

输出描述

一行:日志数组的 JSON,每次监听器被调用追加一条 "name:payload"。