观察者模式
- vue中的观察者模式
- 什么是观察者模式
- 案例
vue中的观察者模式
vue2 底成的原理是 object.defineproperty() 配合观察者模式
object.defineproperty()对数据可以进行劫持 当数据发生变化的时候
需要通知被依赖的地方
这时候 就需要用上观察者模式
什么是观察者模式
观察者模式简单的说就是 一个对象被多个对象依赖, 会自动更新所有依赖的对象
比如说
游戏发布了一次更新 通知了所有玩家
这时候 玩家就是观察者 游戏就是被观察者 或者说目标
案例
class Subject{// 目标constructor(){this.observers=[]}add(observer){this.observers.push(observer)}notify(newMsg){this.observers.forEach(i=>i.consoleFn(newMsg))}
}class Observer{// 观察者constructor(name){this.name=name}consoleFn(newMsg){console.log(newMsg + '======》》》'+ this.name +'收到了')}
}let sub = new Subject()let observer1 = new Observer("观察者1")
let observer2 = new Observer("观察者2")sub.add(observer1) // Observer1 观察 sub
sub.add(observer2) // Observer2 观察 subsub.notify("我是被观察者,我发布了一个信息!") // sub 发布消息// 我是被观察者,我发布了一个信息!======》》》观察者1收到了
// 我是被观察者,我发布了一个信息!======》》》观察者2收到了