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 观察 sub
sub.notify("我是被观察者,我发布了一个信息!") // sub 发布消息
// 我是被观察者,我发布了一个信息!======》》》观察者1收到了
// 我是被观察者,我发布了一个信息!======》》》观察者2收到了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)