采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
proxy()函数中,get和set为什么用this,而不是用target。感觉用target,代码会更清晰 ---------------- vm.key访问时,会执行get方法,此时get里的this怎么就是vm了呢
------ 如果vm.name = { get: function (){this} } vm.name.get():此时里面的this是什么?
不能用 target,如果是子组件的话,通常都是在 Vue.extend 的过程执行 initPropsfunction initProps (Comp) { const props = Comp.options.props for (const key in props) { proxy(Comp.prototype, `_props`, key) }}可以看到,这里的 target 是 Comp.prototype,所以不能直接用 target,而必须要用 this,this 才可以访问到组件的实例 vm
响应式对象的get和set方法里面的this,永远指向,响应式对象。 例子: var obj = {}; Object.defineProperty(obj,'s',{ get: function () { console.log(this); 这个this永远是obj对象 return 'io' } }); console.log(obj.s);
登录后可查看更多问答,登录/注册
全方位讲解 Vue.js 源码,进阶高级工程师
3.0k 4
1.5k 20
1.3k 14
1.2k 12
2.2k 12