浅谈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 相关文章推荐
基于JQuery的列表拖动排序实现代码
Oct 01 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
Apr 04 Javascript
JQuery.get提交页面不跳转的解决方法
Jan 13 Javascript
jQuery实现当前页面标签高亮显示的方法
Mar 10 Javascript
完美实现bootstrap分页查询
Dec 09 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
Mar 17 Javascript
Angularjs的ng-repeat中去除重复数据的方法
Aug 05 Javascript
JS之if语句对接事件动作逻辑(详解)
Jun 28 Javascript
AngularJS实现表单元素值绑定操作示例
Oct 11 Javascript
layui框架table 数据表格的方法级渲染详解
Aug 19 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
May 09 Javascript
javascript中正则表达式语法详解
Aug 07 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实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
drupal 代码实现URL重写
2011/05/04 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
实例说明Python中比较运算符的使用
2015/05/13 Python
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
python 重定向获取真实url的方法
2018/05/11 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
python日志模块logbook使用方法
2019/09/19 Python
利用pandas合并多个excel的方法示例
2019/10/10 Python
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
怎么样写好简历中的自我评价
2013/10/25 职场文书
大专生简历的自我评价
2013/11/26 职场文书
公司行政经理岗位职责
2013/12/24 职场文书
乡镇干部十八大感言
2014/02/17 职场文书
《独坐敬亭山》教学反思
2014/04/08 职场文书
主题实践活动总结
2014/05/08 职场文书
音乐教育专业自荐信
2014/09/18 职场文书
健康状况证明模板
2014/10/23 职场文书
2014年纪检工作总结
2014/11/12 职场文书
死亡赔偿协议书
2015/01/28 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
python前后端自定义分页器
2022/04/13 Python