浅谈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 相关文章推荐
js removeChild 障眼法 可能出现的错误
Oct 06 Javascript
jquery弹出框的用法示例(2)
Aug 26 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
Jun 05 Javascript
JQuery中attr方法和removeAttr方法用法实例
May 18 Javascript
JavaScript 对象深入学习总结(经典)
Sep 29 Javascript
jQuery EasyUI Pagination实现分页的常用方法
May 21 Javascript
js精准的倒计时函数分享
Jun 29 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
Sep 10 jQuery
详解vue axios中文文档
Sep 12 Javascript
实现div内部滚动条滚动到底部和顶部的代码
Nov 15 Javascript
angularjs select 赋值 ng-options配置方法
Feb 28 Javascript
JS复杂判断的更优雅写法代码详解
Nov 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作的文本留言本的例子(六)
2006/10/09 PHP
php 高性能书写
2010/12/11 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
Tensorflow环境搭建的方法步骤
2018/02/07 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
pytorch实现建立自己的数据集(以mnist为例)
2020/01/18 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
Python3运算符常见用法分析
2020/02/14 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
椰子猫砂:CatSpot
2018/08/27 全球购物
高中物理教学反思
2014/02/08 职场文书
新闻专业毕业生求职信
2014/08/08 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
如何在Python中创建二叉树
2021/03/30 Python
Pandas 稀疏数据结构的实现
2021/07/25 Python
《现实主义勇者的王国再建记》第三弹OST全曲试听片段公开
2022/04/04 日漫