Vuejs依赖集合

时间:2017-09-02 11:15:06

标签: vue.js

我正在阅读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

}

}

1 个答案:

答案 0 :(得分:0)

list部门用于通知分配,例如self

#1用于通知非分配更改,包括set,delete和array api(push,pop等)