请稍等 ...
×

采纳答案成功!

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

老师,对触发的方法及实例对象里的this 指向有点混乱了,举例如下:

图片描述这里是触发的obj的set行为,那么trigger()方法及triggerEffects()方法中的this不应都指向obj吗?为什么能拿到在computed构造函数中的this.effect.computed属性呢?

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

1回答

Sunday 2023-01-10 11:39:28

你好

你指的是这个代码吗?

https://img1.sycdn.imooc.com//szimg/63bcdd5a094f36f522361922.jpg

它是 ComputedRefImpl 的构造函数,它的 this 指向实例对象。

trigger()方法及triggerEffects()方法中没有涉及到 this 呢?

0 回复 有任何疑惑可以回复我~
  • 提问者 vivian冲鸭 #1
    老师,可能我描述得有点模糊。我的疑问是obj.name = '李四'这个set行为-->触发的triggerEffetcs方法中的effect与ComputedRefImpl类中的通过new reactiveEffect()生成的 effect是 同一个吗?可是后者的effect指向的是computedObj实例对象,我搞不懂在obj触发的triggerEffetcs内的this.effect为什么也能拿到computed属性
    回复 有任何疑惑可以回复我~ 2023-01-10 12:00:06
  • Sunday 回复 提问者 vivian冲鸭 #2
    你好
    
    在 ComputedRefImpl 构造函数中生成的 effect 实例被赋值到 this.effect 中。
    这个 this.effect 会在 get value () 行为时被触发,从而触发 this.effect.run 方法。 
    run 方法中会赋值 this 为 activeEffect ,在依赖收集时被收集到 dep 下。
    在依赖触发时,从 dep 中获取。
    所以 ComputedRefImpl 中的 this.effect 就是从 dep 中获取到的  effect
    回复 有任何疑惑可以回复我~ 2023-01-10 17:55:41
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信