浅谈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全局函数使用简单说明
Mar 11 Javascript
js取滚动条的尺寸的函数代码
Nov 30 Javascript
js猜数字小游戏的简单实现代码
Jul 02 Javascript
JavaScript按值删除数组元素的方法
Apr 24 Javascript
Javascript实现飞动广告效果的方法
May 25 Javascript
轻松实现javascript数据双向绑定
Nov 11 Javascript
跟我学习javascript的基本类型和引用类型
Nov 16 Javascript
js判断是否为空和typeof的用法(详解)
Oct 07 Javascript
详解React-Todos入门例子
Nov 08 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
Nov 16 Javascript
JS中静态页面实现微信分享功能
Feb 06 Javascript
vue-cli V3.0版本的使用详解
Oct 24 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将字符串全部转换成大写或者小写的方法
2015/03/17 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
JavaScript 异步调用框架 (Part 6 - 实例 & 模式)
2009/08/04 Javascript
jQuery中get和post方法传值测试及注意事项
2014/08/08 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
React组件的三种写法总结
2017/01/12 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
javascript html5轻松实现拖动功能
2017/03/01 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
js读取本地文件的实例
2017/12/22 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
用tensorflow搭建CNN的方法
2018/03/05 Python
Python实现迭代时使用索引的方法示例
2018/06/05 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
Python定时器线程池原理详解
2020/02/26 Python
python实现俄罗斯方块小游戏
2020/04/24 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
工程总经理工作职责
2013/12/09 职场文书
专升本个人自我评价
2013/12/22 职场文书
给朋友的道歉信
2014/01/09 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
代办社保委托书范文
2014/10/06 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
教师外出学习心得体会
2016/01/18 职场文书
工程移交协议书
2016/03/24 职场文书
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL