观察者模式(Observer Pattern)定义一个对象与其他对象之间的一种依赖关系,当对象发生某种变化的时候,依赖它的其他对象都会得到更新。
- 一个对象和另外一个对象关联在一起;
- 惰性执行:并不是立即执行,事件执行之后才执行
- 一对多的关系:一个对象可以绑定多个事件
自定义事件绑定addEvent
自定义事件触发trigger
自定义事件移除removeEvent
let obj1 = {
fn1() {
console.log("fn1);
}
}
let obj1 = {
fn2() {
console.log("fn2);
}
}
// 管理事件的类
class MyEvent{
constructor() {
this.handles = {};
}
// 添加事件
addEven(eventName, fn){
// {maevent1: [fn1, fn2...], myevent2: [fn1, fn2...]}
if (typeof this.handles[eventName] === 'undefined') {
this.handles[eventName] = [];
}
this.handles[eventName].push(fn);
}
// 触发(根据事件名称触发,判断this.handles里是否有eventName)
trigger(eventName) {
if (!(eventName in this.handles)) {
return;
}
this.handles[eventName].forEach(fn => {
fn();
});
}
}
let eventObj = new MyEvent();
eventObj.addEvent("myevent", obj1.fn1);
eventObj.addEvent("myevent", obj2.fn2);
// eventObj.removeEvent("myevent", obj2.fn2);
setTimeout(() => {
eventObj.trigger("myevent");
});