observer类:
constructor (value: any) {
this.value = value
this.dep = new Dep()
this.vmCount = 0
def(value, '__ob__', this)
if (Array.isArray(value)) {
const augment = hasProto
? protoAugment
: copyAugment
augment(value, arrayMethods, arrayKeys)
this.observeArray(value)
} else {
this.walk(value)
}
}
这里的dep属性有什么作用呢?
我知道defineReactive
方法会改造getter setter方法来收集依赖和通知watcher,但是这个方法里都是用的闭包里的dep
来操作的,为什么还要在observer里面声明一个dep
实例呢?
这个dep属性是在Vue.$set和$delete中用到的。如$set中倒数第二行代码