Vue源码之数据代理访问的示例分析
发表于:2025-01-30 作者:千家信息网编辑
千家信息网最后更新 2025年01月30日,小编给大家分享一下Vue源码之数据代理访问的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!概念解析:1) 数据代理
千家信息网最后更新 2025年01月30日Vue源码之数据代理访问的示例分析
小编给大家分享一下Vue源码之数据代理访问的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
概念解析:
1) 数据代理: 通过一个对象代理对另一个对象(在前一个对象内部)中属性的操作(读/写)
2) vue 数据代理: 通过 vm 对象(即this)来代理 data 对象中所有属性的操作
3) 好处: 更方便的操作 data 中的数据
4) 基本实现流程
a. 通过 Object.defineProperty()给 vm 添加与 data 对象的属性对应的属性描述符
b. 所有添加的属性都包含 getter/setter
c. getter/setter 内部去操作 data 中对应的属性数据
疑问
不知道你在使用Vue的时候有没有想过,为什么定义在 data 对象中的属性,可以用 Vue 的实例 this 进行访问?
我们来看看源码的实现。
var sharedPropertyDefinition = { enumerable: true, configurable: true, get: noop, set: noop};// 源码中是这样调用的:proxy(vm, '_data', key)// vm是Vue的实例,key是data对象属性的名字function proxy (target, sourceKey, key) { sharedPropertyDefinition.get = function proxyGetter () { return this[sourceKey][key] }; sharedPropertyDefinition.set = function proxySetter (val) { this[sourceKey][key] = val; }; Object.defineProperty(target, key, sharedPropertyDefinition);}
比如有个如下demo
const vm = new Vue({ el: '#app', data: { message: 'Hello Vue!' }, created() { console.log(this.message) // 输出Hello Vue! console.log(this._data.message) // 同样输出Hello Vue! }})
也就是说当我们这样 this.message 写的时候, Vue 通过 Object.defineProperty 给 this.message 设置一层代理,实际访问的是 this._data 里的 message 属性,而 this._data 指向的对象就是我们写的 data 对象。
以上是"Vue源码之数据代理访问的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
对象
属性
代理
数据
源码
篇文章
示例
分析
内容
实例
时候
输出
不怎么
也就是
也就是说
名字
大部分
好处
实际
就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
文山市税务服务器
ktv数据库设计
上海电脑软件开发机构
关于互联网的科技创新
软件开发好找工作吗
观看网络安全课心得体会
乡镇网络安全法
软件开发岗位的认知
服务器远程剪辑视频
税务局网络安全工作质效
福州速远网络技术
数据库游标倒
瓦里安加速器服务器
数据库文件sql在哪里
县网络安全规划
ftp服务器输入密码
数据库acdi
姑苏区进口服务器厂家直销价格
需求分析占软件开发的比例
网络技术服务合同管辖依据
在软件开发中通常要花费的代价
武汉萌派疯网络技术有限公司
数据库密码远程修改
生物医学文摘数据库
杭州软件开发待遇怎么样
做地图模型的软件开发
医院网络安全运维服务采购
tpc-c数据库
惠普g6服务器
网络安全追责问责自查考核机制