采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
if ((!getter || setter) && arguments.length === 2) { val = obj[key] }
!getter可以理解不进行深度观测可以理解,但是为什么当无getter但是有setter的时候要进行深度观测?
因为arguments.lenght ===2,所以并没有传入val属性,只是取值而已。在initProps方法的for...in里面是有传入第三个参数的,也就是value,所以就不用取值,不执行这个if。
这个只是对初始值 val 做了一次求值,并非要不要深度观测。
请问这个判断为啥要这样写?
同样有这个疑惑。 1. 不理解!getter代表什么 2. 不理解setter为truely时代表什么。 getter是为了给下面Object.defineProperty的get描述符方法用的,但是有没有getter跟setter都不影响val = obj[key]的求值操作吧?既然都不影响求值为什么要进行判断才求值呢?
登录后可查看更多问答,登录/注册
全方位讲解 Vue.js 源码,进阶高级工程师
3.4k 4
1.9k 20
1.7k 14
1.6k 12
2.7k 12
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号