-在 `dep.depend` 方法内部又判断了一次 `Dep.target` 是否有值,有的同学可能会有疑问,这不是多此一举吗?其实这么做并不多于,因为 `dep.depend` 方法除了在属性的 `get` 拦截器函数内被调用之外还在其他地方被调用了,这时候就需要对 `Dep.target` 做判断,至于在哪里调用的我们后面会讲到。另外我们发现在 `depend` 方法内部其实并没有真正的执行收集依赖的动作,而是调用了观察者实例对象的 `addDep` 方法:`Dep.target.addDep(this)`,并以当前 `Dep` 实例对象作为参数。为了搞清楚这么做的目的,我们找到观察者实例对象的 `addDep` 方法,如下:
|