响应式对象里proxy方法中的代理疑问
ryan0217 opened this issue · 1 comments
ryan0217 commented
export function proxy (target: Object, sourceKey: string, key: string) { sharedPropertyDefinition.get = function proxyGetter () { return this[sourceKey][key] } sharedPropertyDefinition.set = function proxySetter (val) { this[sourceKey][key] = val } Object.defineProperty(target, key, sharedPropertyDefinition)通过 Object.defineProperty 把 target[sourceKey][key] 的读写变成了对 target[key] 的读写。所以对于 props 而言,对 vm._props.xxx 的读写变成了 vm.xxx 的读写,而对于 vm._props.xxx 我们可以访问到定义在 props 中的属性,所以我们就可以通过 vm.xxx 访问到定义在 props 中的 xxx 属性了
我理解的是执行Object.defineProperty(target, key, sharedPropertyDefinition)
后,对target[key]的读写会变为对target[sourceKey][key]的读写,与您文中的描述恰好相反,所以对此抱有困惑,望您能为我解疑,谢谢。
ustbhuangyi commented
表达的意思就是通过 vm.xxx 访问到定义在 props 中的 xxx 属性
可能反过来表述更贴切一些,欢迎提 pr