请稍等 ...
×

采纳答案成功!

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

老师,关于defineReactive的一点疑问

if ((!getter || setter) && arguments.length === 2) {
    val = obj[key]
  }

!getter可以理解不进行深度观测可以理解,但是为什么当无getter但是有setter的时候要进行深度观测?

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

2回答

qq_飞越疯人院_1 2019-05-28 23:10:11

因为arguments.lenght ===2,所以并没有传入val属性,只是取值而已。在initProps方法的for...in里面是有传入第三个参数的,也就是value,所以就不用取值,不执行这个if。

0 回复 有任何疑惑可以回复我~
ustbhuangyi 2018-10-28 08:58:25

这个只是对初始值 val 做了一次求值,并非要不要深度观测。

0 回复 有任何疑惑可以回复我~
  • 提问者 K丶L #1
    请问这个判断为啥要这样写?
    回复 有任何疑惑可以回复我~ 2018-10-28 09:32:23
  • BT7274 #2
    同样有这个疑惑。
    
    1. 不理解!getter代表什么
    2. 不理解setter为truely时代表什么。
    
    getter是为了给下面Object.defineProperty的get描述符方法用的,但是有没有getter跟setter都不影响val = obj[key]的求值操作吧?既然都不影响求值为什么要进行判断才求值呢?
    回复 有任何疑惑可以回复我~ 2021-04-27 08:48:32
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号