Reflect对象
一.Reflect对象基础
Reflect对象是ES6出现的新的API,用于操作对象内部的方法。
特点:
1. 对于操作有明确的返回结果。如返回布尔值表示操作成功与否
2. 和Proxy的拦截方法一一对应,实现操作的默认行为
3.将in,delete,new等命令,用方法实现
4.该对象的方法将逐渐取代Object上的方法
二.静态方法
和Proxy的拦截方法一一对应,一共有13个方法;
所有方法的第一个参数都必须是对象。否则报错。
返回布尔值的方法有:
1. Reflect.set(target,propKey, value, receiver)
target[propKey] = value; // 操作是否成功
如果传入receiver,则this指向receiver
2. Reflect.has(target, propKey)
propKey in target
3. Reflect.deleteProperty(target, propKey)
delete target[propKey] // 操作是否成功
4. Reflect.setPrototypeOf(target, proto)
target.__proto__ = proto; // 操作是否成功
5. Reflect.defineProperty(target, propKey, propDescriotor)
Object.defineProperty(target, propKey, propDescriptor)//操作是否成功
6. Reflect.isExtensible(target)
Object.isExtensible(target)
7.Reflect.preventExtensions(target)
Object.preventExtensions(target)// 返回操作是否成功
返回非布尔值的方法有:
1. Reflect.get(target, propKey,receiver)
target[propKey]
1.如果方法中传入了receiver参数,那么,如果getter方法中有this,this指向receiver
2.如果不存在,返回undefined
2. Reflect.construct(Target, args)
new Target(...args)
3. Reflect.getPrototypeOf(target)
target.__proto__
4. Reflect.apply(fn, thisArg, args)
Function.prototype.apply.call(target, thisArg, args);
5. Reflect.getOwnPropertyDescriptor(target, propKey)
Object.getOwnPropertyDescriptor(target, propKey)
6.Reflect.ownKeys(target)
Object.getOwnPropertyNames(target) +
Object.getOwnPropertySymbols(target)
Reflect对象的更多相关文章
- es6 Reflect对象详解
Reflect是ES6为操作对象而提供的新API,而这个API设计的目的只要有: 将Object对象的一些属于语言内部的方法放到Reflect对象上,从Reflect上能拿到语言内部的方法.如:Obj ...
- ES6引入的Reflect对象目的何在?
Reflect对象其实就是为了取代Object对象.取代原因有一下几点: 1)Object对象的一些内部方法放在了Reflect上面,比如:Object.defineProperty.主要是优化了语言 ...
- ES6新特性:Javascript中的Reflect对象
Reflect介绍: Reflect这个对象在我的node(v4.4.3)中还没有实现, babel(6.7.7)也没有实现 ,新版本的chrome是支持的, ff比较早就支持Proxy和Reflec ...
- 12,13 Proxy和Reflect
Proxy和Reflect Proxy(代理) Proxy用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种"元编程"(meta programming),即对编程 ...
- ES6 Proxy和Reflect(下)
construct() construct方法用于拦截new命令. var handler = { construct (target, args) { return new target(...ar ...
- es6重点笔记:Symbol,Set,Map,Proxy,Reflect
一,Symbol 原始数据类型,不是对象,它是JavaScript第七种数据类型,表示独一无二的值.Symbol是通过Symbol函数生成的: let s = Symbol(); typeof s / ...
- es6学习笔记-Proxy、Reflect、Promise
Proxy Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程. Proxy 可以理解成,在目标对象之前 ...
- 深入理解 ES6中的 Reflect
阅读目录 一:Reflect.get(target, name, receiver) 二:Reflect.set(target,name,value,receiver) 三:Reflect.apply ...
- ES6走一波 Proxy/Reflect
Proxy:像拦截器,对目标对象修改等进行拦截,是一种元编程(meta programming),即修改JS语言本身. //生成proxy实例,两个参数都是对象,targetObj是要拦截的目标对象, ...
随机推荐
- TZOJ2882: 美食节之感恩父母
#include<stdio.h> int main() { ],b[],i,j,max,m,t1,t2,t3; while(scanf("%d",&m),m) ...
- Python使用datetime来判断近七天
目录 strptime 使用strptime来格式化字符串 datetime.datetime.strptime("2019-10-02", "%Y-%m-%d" ...
- python 创建es mapping
import requests def get_(): url = "http://127.0.0.1:9200/indextest/_mapping?pretty" ss = r ...
- 时间格式_java
@Test public void testDate(){ Date date=new Date(); System.out.println(date); /*日期格式*/ DateFormat df ...
- 【爬虫集合】抖音API分析
1. 分析接口 Charles注册码 Registered Name: https://zhile.io License Key: 48891cf209c6d32bf4 抖音API分析 抖音.猫眼网页 ...
- [异步请求]ajax、axios、fetch之间的详细区别以及优缺点
1.jQuery ajax $.ajax({ type: 'POST', url: url, data: data, dataType: dataType, success: function () ...
- 数据库与MySQL进阶(4)
1,事务 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚. 1.1 ACID四大特性 原子性(Atomicity) 事务被视为不 ...
- 浅析web网站反向代理的配置
一.背景 最近在部署项目到web服务器上时,该项目有一个打开视频监控的功能,视频的服务器是一台内网的服务器,不允许设置外网端口访问,网站服务器和视频服务器在同一个局域网内,可以相互联通.网络拓扑图如下 ...
- Vibe
在读研和工作之间徘徊了半年,看着一个个好友工作.保研,生活安排得井井有条,我也是时候收拾心情,整装前进了.既然选择了图像,就一定要好好做下去. 今天开始第一个算法,Vibe. ViBe是一种像素级视频 ...
- CAS单点登录相关配置
一.CAS单点登录服务端的部署 部署 把CAS所对应的war包部署到tomcat中 4.品优购资源V1.3\配套软件\配套软件\CAS\cas.war 配置 更改tomcat的端口号 <Conn ...