请稍等 ...
×

采纳答案成功!

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

$options 中的 render 函数

黄神黄神,

  1. $options 中的 render 函数, 是不是就是用户手写的或者编译而来的
  2. render.call 时, 为什么要用到 vm._renderProxy , 这个代理有什么作用

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

2回答

Vvvvvvvvvvvvi 2020-05-10 12:37:29

https://img1.sycdn.imooc.com//szimg/5eb784f40977035f10701242.jpg    

0 回复 有任何疑惑可以回复我~
  • 因为手写 render 的时候 options.render._withStripped 是 undefined,所以是 hasHandler(看下面的图)。
    你试试在 render 函数里加一个 console.log('message1' in this) 就能出报错了
    回复 有任何疑惑可以回复我~ 2020-05-10 13:24:53
  • 老师是不是可以这么理解, 在template中的render函数 是
    anonymous(
    ) {
    with(this){return _c('div',{attrs:{"id":"app"}},[_v(_s(mes))])}
    }   使用了with 触发了 has 方法所以才报错 , 而手写的render函数需要手动触发 has 方法才报错
    回复 有任何疑惑可以回复我~ 2020-05-10 16:17:50
  • 不是啊,template 编译后的 render._withStripped 为 true,那么它就是 getHandler,它代理的是 get 方法,也就是你访问变量就会触发,而手写 render 的是 hasHandler,它代理的是 has 方法,只有用 in 语法才会触发。
    回复 有任何疑惑可以回复我~ 2020-05-10 16:20:40
ustbhuangyi 2020-02-14 09:18:54

1. 是的
2. 在开发环境下,初始化过程会执行 initProxy,其实就是初始化 vm._renderProxy
https://img1.sycdn.imooc.com/szimg/5e45f4eb09cfaa6d15960472.jpg

https://img1.sycdn.imooc.com//szimg/5e45f50f09815dbe22680974.jpg
然后可以看它代理的 get 和 has 方法

https://img1.sycdn.imooc.com/szimg/5e45f53d09e64bd223261650.jpg

其实就是用于在渲染过程中遇到问题的一些警告。

https://img1.sycdn.imooc.com/szimg/5e45f56e09e3b26522960976.jpg

比如这个函数,相信你一定不陌生。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信