参考博文:
https://juejin.cn/post/7101481154565865486#heading-5
class eventBus {
constructor(){
this.eventObj = {}; // 用于存储所有订阅事
}
$on(name, callbcak) {
// 判断是否存储过
if (!this.eventObj[name]) {
this.eventObj[name] = [];
}
this.eventObj[name].push(callbcak); // 往事件数组里面push
}
$emit(name, ...args) {
// 获取存储的事件回调函数数组
const eventList = this.eventObj[name];
// 执行所有回调函数且传入参数
for (const callbcak of eventList) {
callbcak(...args);
}
}
}
使用
let EB = new eventBus()
EB.$on('key1',(name,age)=>{
console.log('订阅事件',name,age)
})
EB.$emit('key1','小猪佩奇',12)
输出:订阅事件 小猪佩奇 12