题解 | #发布订阅模式#
发布订阅模式
https://www.nowcoder.com/practice/569e1fd641be4fd797f12a28b763d709
class EventEmitter { constructor() { this.obj = {}; // 用于存储事件名称和对应的处理函数列表 } on(name, fn) { let result = this.obj; if (!result[name]) { result[name] = [fn]; // 如果之前没有这个事件名称,就创建一个数组来存储处理函数 } else { result[name].push(fn); // 如果已经有了这个事件名称,就直接将处理函数添加到数组中 } } emit(name) { let result = this.obj; if (result[name]) { for (let fun of result[name]) { fun([].slice.call(arguments, 1)); // 触发指定名称的所有处理函数,并传入参数 } } } }
手撕题题库 文章被收录于专栏
这是我开卷的第一步!!