Proxy + Reflect 实现 响应的数据变化
2024-10-07 08:13:48
Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)
let p = new Proxy(target, handler);
- get(target, propKey, receiver):拦截对象属性的读取,比如
proxy.foo
和proxy['foo']
。 - set(target, propKey, value, receiver):拦截对象属性的设置,比如
proxy.foo = v
或proxy['foo'] = v
,返回一个布尔值。
let handler = {
get(target,key) {
//如果得到的值是一个对象我们还得再调一次
if(typeof target[key]=='object') {
return new Proxy(target[key],handler)
}
return Reflect.get(target,key);
},
set(target,key,value) {
if(key==='length') {
return true;
}
update();
return Reflect.set(target,key,value);
}
};
let obj = {
a:{a:},
b:,
d:[,,,]
};
function update() {
console.log('更新视图')
};
let p = new Proxy(obj,handler);
obj.c=;
console.log(obj)
Reflect.get(target,key); 相当于 target{key]
Reflect.set(target,key,value); 相当于 target[key}= value; 输出:
{ a: { a: 1 }, b: 2, d: [ 1, 2, 3, 4 ], c: 3 }
最新文章
- mvc view 中 js 不反应
- Django用户管理及认证
- Jquery对象,DOM对象
- 创建Spring容器
- MemProof教程
- Windows phone 之XML序列化与反序列化
- scanf与gets函数混用 前后位置出错的问题解决
- LeetCode77:Combinations
- HTML5新特性-多线程(Worker SharedWorker)
- 关于scrollTop获取卷曲距离的三种方式- --兼容代码如下
- c/c++ 字节对齐
- VSCode 拓展插件推荐
- WebStorm project 打开多个项目的方法
- 【Jenkins】安装插件
- Linux系统安装telnet以及xinetd服务
- win7取消任务栏预览并显示文件名
- 初识PHP(三)面向对象特性
- Tomcat 系统架构与设计模式1
- Java常用的排序算法三
- HTML5文档的各个组成部分分类
热门文章
- mysql执行拉链表操作
- UI-WPF_UI:WPF UI - DMSkin官方网站
- Spring+hibernate 配置实例
- Linux_系统进程管理
- NW.js
- VM CentOS建立共享文件夹实现VS Code在windows环境下go开发,在centos环境里编译
- Java中字母大小写的转换
- VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题
- java常用类详细介绍及总结:字符串相关类、日期时间API、比较器接口、System、Math、BigInteger与BigDecimal
- 部署第一个servlet应用到tomcat上