本文实例讲述了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小时内与您取得联系。