题解 | #发布订阅模式#
发布订阅模式
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)); // 触发指定名称的所有处理函数,并传入参数
}
}
}
}
手撕题题库 文章被收录于专栏
这是我开卷的第一步!!