浅谈es6语法 (Proxy和Reflect的对比)


Posted in Javascript onOctober 24, 2017

如下所示:

{ 

 //原始对象
 let obj={
 time:'2017-03-11',
 name:'net',
 _r:123
 };
 //(代理商)第一个参数代理对象,第二个参数真正代理的东西
 let monitor=new Proxy(obj,{
 // 拦截对象属性的读取
 get(target,key){
  return target[key].replace('2017','2018')
 },
 // 拦截对象设置属性
 set(target,key,value){
  if(key==='name'){
  //赋值并返回
  return target[key]=value;
  }else{
  //不做操作直接返回
  return target[key];
  }
 },
 // 拦截key in object操作
 has(target,key){
  if(key==='name'){
  return target[key]
  }else{
  return false;
  }
 },
 // 拦截delete
 deleteProperty(target,key){
  if(key.indexOf('_')>-1){
  delete target[key];
  return true;
  }else{
  return target[key]
  }
 },
 // 拦截Object.keys,Object.getOwnPropertySymbols,Object.getOwnPropertyNames
 ownKeys(target){
  return Object.keys(target).filter(item=>item!='time')
 }
 });

 console.log('get',monitor.time); //2018-03-11
 //操作
 monitor.time='2018';
 monitor.name='mukewang';
 console.log('set',monitor.time,monitor);//2018-03-11;{time: "2017-03-11", name: "mukewang", _r: 123}

 console.log('has','name' in monitor,'time' in monitor);//true;false

 delete monitor.time;
 console.log('delete',monitor);//{time: "2017-03-11", name: "mukewang", _r: 123}
 //
 delete monitor._r;
 console.log('delete',monitor);//{time: "2017-03-11", name: "mukewang"}

 console.log('ownKeys',Object.keys(monitor));//["name", "_r"]

}

{
 let obj={
 time:'2017-03-11',
 name:'net',
 _r:123
 };

 console.log('Reflect get',Reflect.get(obj,'time'));//get 2017-03-11
 Reflect.set(obj,'name','mukewang');
 console.log(obj);//{time: "2017-03-11", name: "mukewang", _r: 123}
 console.log('has',Reflect.has(obj,'name'));//true
}

以上这篇浅谈es6语法 (Proxy和Reflect的对比)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 选择文件夹对话框(web)
Jul 07 Javascript
javascript 二分法(数组array)
Apr 24 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
Dec 10 Javascript
jQuery实现简单的间隔向上滚动效果
Mar 09 Javascript
给before和after伪元素设置js效果的方法
Dec 04 Javascript
详解使用React进行组件库开发
Feb 06 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
Feb 08 Javascript
vue项目关闭eslint校验
Mar 21 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
Aug 22 Javascript
js实现下拉框二级联动
Dec 04 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
Jul 03 Javascript
JavaScript面向对象核心知识与概念归纳整理
May 09 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
Oct 24 #jQuery
通俗易懂地解释JS中的闭包
Oct 23 #Javascript
AngularJS 教程及实例代码
Oct 23 #Javascript
浅谈Koa服务限流方法实践
Oct 23 #Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
Oct 23 #Javascript
angularjs实现猜大小功能
Oct 23 #Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
Oct 23 #Javascript
You might like
PHP 5.0对象模型深度探索之属性和方法
2008/03/27 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
extjs 04_grid 单击事件新发现
2012/11/27 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
bootstrap fileinput完整实例分享
2016/11/08 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
python查询sqlite数据表的方法
2015/05/08 Python
Python中的字符串查找操作方法总结
2016/06/27 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
python pandas读取csv后,获取列标签的方法
2018/11/12 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
2019/06/25 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
python实现淘宝购物系统
2019/10/25 Python
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
门卫人员岗位职责
2013/12/24 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
校园运动会广播稿
2015/08/19 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python
Mysql关于数据库是否应该使用外键约束详解说明
2021/10/24 MySQL
HTTP中的Content-type详解
2022/01/18 HTML / CSS
Django框架之路由用法
2022/06/10 Python