全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

ES6中Proxy与Reflect实现重载(overload)的方法

本文实例讲述了ES6中Proxy与Reflect实现重载(overload)的方法。分享给大家供大家参考,具体如下:

Proxy与Reflect实现重载(overload)

从语法角度讲JavaScript不支持重载。原因很简单,JS中函数可以传入任意类型、任意个数的参数,通通可以通过在函数内使用this.arguments获得。这样,就无法实现同名函数参数列表不同实现不同功能。当然,在实际使用过程中,可以人为去检测传入实参的个数及类型,来进行不同操作。但是,我认为这不能叫做重载。

ES6带来了Proxy和Reflect,配合使用可以实现重载。Proxy用于修改某些操作的默认行为,相当于对原始想进行的操作进行“包装”;Reflect对象的方法与Proxy对象的方法一一对应,这使得Proxy对象可以方便的调用对应的Reflect方法完成默认行为。我们可以这样使用它们:

function LogMessage( m ){
  this.m = m;
}
var message = new LogMessage( 1 );
var overload = new Proxy(message , {
  get: function(target, key, receiver){
    console.log(`getting ${key}`);
    return Reflect.get(target , key , receiver);
  },
  set: function(target, key, value, receiver){
    console.log(`setting ${key}`);
    return Reflect.set(target, key, value, receiver);
  }
});
overload.m = 2; //setting m
var s = overload.m; //getting m

看到了没,是不是很有意思,新创建的Proxy对象overload可以完成目标对象message的操作,同时,可以通过在默认操作之前自定义一些其他操作。我认为,这更像Java里的重载。

那么Proxy与Reflect有哪些实例方法呢?

1.get()
用于拦截某个属性的读取操作。

2.set()
用于拦截某个属性的赋值操作。

3.has()
可以隐藏某些属性,不被in操作符遍历到。

4.construct()
用于拦截new命令。

5.deleteProperty()
用于拦截delete操作。

6.defineProperty()
用于拦截Object.defineProperty操作。

7.enumerate()
用于拦截for...in循环。

8.getOwnPropertyDescriptor()
用于拦截Object.getOwnPropertyDescriptor操作。

9.isExtensible()
用于拦截Object.isExtensible操作。

10.preventExtensions()
用于拦截Object.preventExtensions操作。

11.setPrototypeOf()
用于拦截Object.setPrototypeOf操作。

上面很多方法不是很常用,如果感兴趣可以去查查相关资料

希望本文所述对大家ECMAScript程序设计有所帮助。


# ES6  # Proxy  # Reflect  # 重载  # overload  # 详解ES6中的代理模式——Proxy  # 实例解析ES6 Proxy使用场景介绍  # 详细探究ES6之Proxy代理  # ES6中Proxy代理用法实例浅析  # 浅谈es6语法 (Proxy和Reflect的对比)  # ES6之Proxy的get方法详解  # JavaScript中的ES6 Proxy的具体使用  # ES6 Proxy实现Vue的变化检测问题  # ES6知识点整理之Proxy的应用实例详解  # ES6 proxy和reflect的使用方法与应用实例分析  # ES6中javascript实现函数绑定及类的事件绑定功能详解  # ES6使用新特性Proxy实现的数据绑定功能实例  # 我认为  # 可以通过  # 遍历  # 不是很  # 感兴趣  # 我们可以  # 带来了  # 给大家  # 很简单  # 自定义  # 相关资料  # 可以实现  # 不被  # 所述  # 程序设计  # 很有意思  # 过程中  # 这更  # 角度讲  # 这不 


相关文章: 学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  ,南京靠谱的征婚网站?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  建站之星如何快速更换网站模板?  安徽网站建设与外贸建站服务专业定制方案  宝塔建站后网页无法访问如何解决?  开源网站制作软件,开源网站什么意思?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  建站之星IIS配置教程:代码生成技巧与站点搭建指南  建站之星安装后如何配置SEO及设计样式?  定制建站如何定义?其核心优势是什么?  定制建站流程解析:需求评估与SEO优化功能开发指南  已有域名建站全流程解析:网站搭建步骤与建站工具选择  如何实现建站之星域名转发设置?  Java解压缩zip - 解压缩多个文件或文件夹实例  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  nginx修改上传文件大小限制的方法  网站网页制作专业公司,怎样制作自己的网页?  网站微信制作软件,如何制作微信链接?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  如何在云服务器上快速搭建个人网站?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何用虚拟主机快速搭建网站?详细步骤解析  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  建站之星在线版空间:自助建站+智能模板一键生成方案  沈阳制作网站公司排名,沈阳装饰协会官方网站?  如何获取上海专业网站定制建站电话?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  微信推文制作网站有哪些,怎么做微信推文,急?  为什么Go需要go mod文件_Go go mod文件作用说明  制作宣传网站的软件,小红书可以宣传网站吗?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  如何在阿里云完成域名注册与建站?  如何在Windows虚拟主机上快速搭建网站?  如何在新浪SAE免费搭建个人博客?  如何用西部建站助手快速创建专业网站?  如何通过可视化优化提升建站效果?  如何高效完成独享虚拟主机建站?  建站OpenVZ教程与优化策略:配置指南与性能提升  如何使用Golang table-driven基准测试_多组数据测量函数效率  制作电商网页,电商供应链怎么做?  模具网站制作流程,如何找模具客户?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  建站之星展会模版如何一键下载生成?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  如何制作网站标识牌,动态网站如何制作(教程)? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。