Vue08 数据代理
2024-10-20 15:58:45
1 说明
所谓“数据代理”,是指 通过一个对象代理对另一个对象的属性进行读或写操作。
2 简单示例
2.1 代码
let obj = {x:100};
let obj2 = {y:200};
Object.defineProperty(obj2,"x",{
get(){
return obj.x;
},
set(value){
obj.x = value;
}
})
2.2 效果
通过obj2代理对obj的属性进行操作,如下所示
设置obj2.x=333,obj.x值也改变
3 Vue中的数据代理
3.1 代码
<body> <div id="root">
<h1>{{name}}</h1>
<h1>{{address}}</h1> </div> <script type="text/javascript" > let data = {
name:'历史',
address:'杭州'
} const vm = new Vue({
el:'#root',
data
}) </script> </body>
3.2 效果
Vue中的数据代理是:通过vm对象代理对data对象的属性进行操作(读或写),如下所示
设置vm.name的值,data.name也改变
另外,请注意一点:vm._data === data
,返回true
3.3 基本原理
3.3.1 说明
Vue中数据代理的基本原理是,通过Object.defineProperty()
将data对象中的属性添加到vm对象上,并为每个添加到vm上的属性指定getter和setter,在getter和setter中对data对象的属性进行读或写操作
3.3.2 示例
代码同上
控制台查看vm对象,发现它有address属性和name属性,还有一个_data属性
查看这三个属性的值,发现就是data对象的值。
所以vue是这么做的,data对象放在_data里面,且在vm最外层添加了属性address和name,并且给了setter和getter函数,代理data对象
3.3.3 图示
最新文章
- springmvc环境搭建以及常见问题解决
- 解决php文件乱码
- JavaScript中如何中断forEach循环
- LWP 轻量级线程的意义与实现
- TelephonyManager对黑名单的管理
- 浅谈Spark Kryo serialization
- Asp.net的内置对象!!!
- EXTJS 4.2 资料 控件之combo 联动
- MySql 链接url 参数详解
- 不root的情况下 查看App的数据表
- 从头开始建网站(三)DNS
- 批处理删除IIS的everyone、users的访问权限
- 朴素的treap
- ajax和跨域
- VisualSVN服务器的本地搭建和使用
- VC++ 实现INI文件读写操作
- 二层协议--STP协议总结
- [Laravel] 03 - DB facade, Query builder &; Eloquent ORM
- 【struts2】Struts2的系统架构
- 整理 node-sass 安装失败的原因及解决办法
热门文章
- .NET应用开发之SQLServer常见问题分析
- 前端面试HTML和CSS总结,这一篇就够了!
- 【OpenStack云平台】openstack命令行管理之环境变量设置
- 【DL论文精读笔记】Object Detection in 20 Y ears: A Survey目标检测综述
- 单例模式实现的多种方式、pickle序列化模块、选课系统需求分析等
- vue 项目中,后端返回文件流,导出excel
- 如何通过 C#/VB.NET 将 PDF 转为 Word
- ping localhost时出现::1的原因以及解决办法
- week_4
- 基于 Traefik 的激进 TLS 安全配置实践