发布订阅模式
class EventEmitter {
constructor() {
this.cache = {}
}
// 注册事件
$on(eventType, fn) {
// 添加事件
this.cache[eventType] = this.cache[eventType] || [];
this.cache[eventType].push(fn);
}
// 注销事件
$off(eventType) {
if(this.cache[eventType]) {
delete this.cache[name];
}
}
// 触发事件
$emit(eventType) {
if(this.cache[eventType]) {
this.cache[eventType].forEach(handle=>{
handle();
})
}
}
}
// 测试
let eventEmitter = new EventEmitter();
function f(){
console.log("Jason");
}
eventEmitter.$on('click' f);
eventEmitter.$emit('click'); // Jason
eventEmitter.$off('click'); // click 事件注销
eventEmitter.$emit('click'); // click 事假已不存在
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。