我正在阅读Vue.js的源代码
我无法理解defineReactive
函数中的这一部分,它将属性转换为setter和getter。
我的问题是:
当属性是对象时,为什么vue会添加2依赖?(参见下面的代码,#1和#2是2个不同的依赖)
const dep = new Dep()
let childOb = !shallow && observe(val)
Object.defineProperty(obj, key, {
enumerable: true,
configurable: true,
get: function reactiveGetter () {
const value = getter ? getter.call(obj) : val
if (Dep.target) {
dep.depend()// #1
if (childOb) {
childOb.dep.depend() //#2
}
if (Array.isArray(value)) {
dependArray(value)
}
}
return value
}
}
答案 0 :(得分:0)
list
部门用于通知分配,例如self
#1
用于通知非分配更改,包括set,delete和array api(push,pop等)