|
@@ -678,7 +678,7 @@ if (this.computed) {
|
|
|
|
|
|
## 依赖收集的过程
|
|
|
|
|
|
-`this.get()` 是我们遇到的第一个观察者对象的实例方法,它的作用可以用两个字描述即:**求值**。求值的目的有两个,第一能够触发访问器属性的 `get` 拦截器函数,第二能能够获得被观察目标的值。而且能够触发访问器属性的 `get` 拦截器函数是依赖被收集的关键,下面我们具体查看一下 `this.get()` 方法的内容:
|
|
|
+`this.get()` 是我们遇到的第一个观察者对象的实例方法,它的作用可以用两个字描述:**求值**。求值的目的有两个,第一个是能够触发访问器属性的 `get` 拦截器函数,第二个是能够获得被观察目标的值。而且能够触发访问器属性的 `get` 拦截器函数是依赖被收集的关键,下面我们具体查看一下 `this.get()` 方法的内容:
|
|
|
|
|
|
```js
|
|
|
get () {
|
|
@@ -818,7 +818,7 @@ depend () {
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-在 `dep.depend` 方法内部又判断了一次 `Dep.target` 是否有值,有的同学可能会有疑问,这不是多此一举吗?其实这么做并不多于,因为 `dep.depend` 方法除了在属性的 `get` 拦截器函数内被调用之外还在其他地方被调用了,这时候就需要对 `Dep.target` 做判断,至于在哪里调用的我们后面会讲到。另外我们发现在 `depend` 方法内部其实并没有真正的执行收集依赖的动作,而是调用了观察者实例对象的 `addDep` 方法:`Dep.target.addDep(this)`,并以当前 `Dep` 实例对象作为参数。为了搞清楚这么做的目的,我们找到观察者实例对象的 `addDep` 方法,如下:
|
|
|
+在 `dep.depend` 方法内部又判断了一次 `Dep.target` 是否有值,有的同学可能会有疑问,这不是多此一举吗?其实这么做并不多余,因为 `dep.depend` 方法除了在属性的 `get` 拦截器函数内被调用之外还在其他地方被调用了,这时候就需要对 `Dep.target` 做判断,至于在哪里调用的我们后面会讲到。另外我们发现在 `depend` 方法内部其实并没有真正的执行收集依赖的动作,而是调用了观察者实例对象的 `addDep` 方法:`Dep.target.addDep(this)`,并以当前 `Dep` 实例对象作为参数。为了搞清楚这么做的目的,我们找到观察者实例对象的 `addDep` 方法,如下:
|
|
|
|
|
|
```js
|
|
|
addDep (dep: Dep) {
|