js
// 收集依赖/收集订阅者
class Dep {
constructor(){
// 存放所有订阅者的信息
this.subs = []
}
// 向 subs 数组中,添加订阅者信息的方法
addSub(watcher){
this.subs.push(watcher)
}
// 发布给订阅者的方法
notify(){
this.subs.forEach(watcher => watcher.update)
}
}
// 订阅者的类
class Watcher {
constructor(cb){
this.cb = cb
}
// 触发回调的方法
update(){
this.cb()
}
}
const w1 = new Watcher(()=>{
console.log('我是第一个订阅者')
})
w1.update()
const w2 = new Watcher(()=>{
console.log('我是第2个订阅者')
})
w2.update()
const dep = new Dep()
dep.addSub(w1)
dep.addSub(w2)
dep.notify()