Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)

let p = new Proxy(target, handler);
  • get(target, propKey, receiver):拦截对象属性的读取,比如proxy.fooproxy['foo']
  • set(target, propKey, value, receiver):拦截对象属性的设置,比如proxy.foo = vproxy['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 }

 

最新文章

  1. mvc view 中 js 不反应
  2. Django用户管理及认证
  3. Jquery对象,DOM对象
  4. 创建Spring容器
  5. MemProof教程
  6. Windows phone 之XML序列化与反序列化
  7. scanf与gets函数混用 前后位置出错的问题解决
  8. LeetCode77:Combinations
  9. HTML5新特性-多线程(Worker SharedWorker)
  10. 关于scrollTop获取卷曲距离的三种方式- --兼容代码如下
  11. c/c++ 字节对齐
  12. VSCode 拓展插件推荐
  13. WebStorm project 打开多个项目的方法
  14. 【Jenkins】安装插件
  15. Linux系统安装telnet以及xinetd服务
  16. win7取消任务栏预览并显示文件名
  17. 初识PHP(三)面向对象特性
  18. Tomcat 系统架构与设计模式1
  19. Java常用的排序算法三
  20. HTML5文档的各个组成部分分类

热门文章

  1. mysql执行拉链表操作
  2. UI-WPF_UI:WPF UI - DMSkin官方网站
  3. Spring+hibernate 配置实例
  4. Linux_系统进程管理
  5. NW.js
  6. VM CentOS建立共享文件夹实现VS Code在windows环境下go开发,在centos环境里编译
  7. Java中字母大小写的转换
  8. VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题
  9. java常用类详细介绍及总结:字符串相关类、日期时间API、比较器接口、System、Math、BigInteger与BigDecimal
  10. 部署第一个servlet应用到tomcat上