请稍等 ...
×

采纳答案成功!

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

this问题

proxy()函数中,get和set为什么用this,而不是用target。感觉用target,代码会更清晰
----------------
vm.key访问时,会执行get方法,此时get里的this怎么就是vm了呢

------
如果vm.name  =  {
  get: function (){this}
}
vm.name.get():此时里面的this是什么?

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

1回答

ustbhuangyi 2021-04-09 22:04:04

不能用 target,如果是子组件的话,通常都是在 Vue.extend 的过程执行 initProps
function initProps (Comp) {
 const props = Comp.options.props
 for (const key in props) {
   proxy(Comp.prototype, `_props`, key)
 }
}
可以看到,这里的 target 是 Comp.prototype,所以不能直接用 target,而必须要用 this,this 才可以访问到组件的实例 vm

1 回复 有任何疑惑可以回复我~
  • 响应式对象的get和set方法里面的this,永远指向,响应式对象。
    例子:
    var obj = {};
        Object.defineProperty(obj,'s',{
          get: function () {
            console.log(this);  这个this永远是obj对象
            return 'io'
          }
        });
        console.log(obj.s);
    回复 有任何疑惑可以回复我~ 2021-04-10 21:34:31

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信