initProxy(vm)中的hasHandler如何被触发的?

来源:5-15 Props--v2.6.11(五)

广宝哥

2020-10-29

您好,黄老师,我翻开了很久代码,也和同学讨论,还是有不懂的地方。在执行render函数的过程,如果有属性没有在data中定义,就会触发了hasHandler来提示错误信息,但是Proxy中的has函数只会在in操作符才会触发的呀。vue内部是怎么触发这个has函数的呢
图片描述
图片描述
图片描述

写回答

1回答

ustbhuangyi

2020-10-30

这个主要是在用户侧触发的呀,如果用 in 操作符,且如果是 hasHandler 的时候,就会触发 has 函数了。

0
4
广宝哥
老师,我好像找到问题的所在了,我单独把render函数拎出来的时候,因为render函数用了with() {} 操作符,所以就触发了Proxy的has函数,如果把with() {}去掉,就不会触发Proxy的has函数,具体原因估计得找一下书和资料了
2020-10-30
共4条回复

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4984 学习 · 1037 问题

查看课程