请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于收集依赖dep.depend() 的疑问

黄老师你好!在对数据完成观测之后,后面new Watcher,到触发getter进行依赖收集时,执行dep.depend(),这个dep只是上面刚刚 new 出来的实例,这个 dep 跟当前数据对象的 --ob–.dep 属性有什么关系呢?我看网上其他的说是:执行const ob = this.–ob–; ob.dep.depend(); 执行的是当前数据对象的dep.depend();图片描述图片描述

正在回答 回答被采纳积分+3

1回答

ustbhuangyi 2021-11-24 13:51:03

这个 dep 和 ob.dep 没什么关系,这个 dep.depend 执行的时候是为了收集当前执行的 watcher 作为它依赖。

而 ob.dep 是为了 Vue.set 用的

https://img1.sycdn.imooc.com//szimg/619dd269099308ac04800246.jpg

这里做依赖收集,然后 Vue.set 会执行 ob.dep.notify()

这块内容后面视频会讲

0 回复 有任何疑惑可以回复我~
  • 提问者 秃然的地中海 #1
    哦,之前我理解错了,一直以为是往 vm 实例的数据对象的 Observer.dep.subs 里面 push watcher。实际上是数据对象每一个属性的 getter 方法里面维护着一个 dep 对象,是往 dep.subs 里面 push watcher,所以我在此处打印 vm 实例,是看不到 dep 的,这样理解对吗,黄老师?
    回复 有任何疑惑可以回复我~ 2021-11-24 15:28:32
  • ustbhuangyi 回复 提问者 秃然的地中海 #2
    对,闭包里的值,你在外部是访问不到的
    回复 有任何疑惑可以回复我~ 2021-11-25 15:09:24
  • 提问者 秃然的地中海 #3
    感谢黄老师!
    回复 有任何疑惑可以回复我~ 2021-11-25 15:17:21

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信