这里其实是一个watcher上记录(newDeps)自己监听的dep,dep存放(subs)监听自己的watchers。
也就是说触发了getter之后,watcher上就会记录这个dep是被自己监听的。dep上也会记录这个watcher是监听自己的。
addDep (dep: Dep) {
const id = dep.id
if (!this.newDepIds.has(id)) {
this.newDepIds.add(id)
this.newDeps.push(dep)
// 如果newDepsId里没有,就再这个watcher的newDeps里记录这个dep
if (!this.depIds.has(id)) {
// 就说明这个watcher这次应该在dep里但是上次不在dep的监听里,所以要给dep添上这个watcher
dep.addSub(this)
}
}
}
是这样的嘛,我觉得他这个绕就是绕在他是一个双向的过程,有就一起有,没有就一起没有,清空的时候,如果这个watcher不监听某个dep了,那在dep里也要清除相应的watcher