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是要拦截的目标对象, ...
随机推荐
- ORACLE的客户端、后台进程
Oracle数据库进程之服务器进程详解 Oracle实例主要有三类进程:服务器进程.后台进程和从属进程.这里介绍一下Oracle数据库服务器进程的相关知识 Oracle数据库中的各个进程要完成某个特定 ...
- Django基础cookie和session
Django基础cookie和session 1.会话跟踪 什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如给10086打个电话,你就是客户端, ...
- 使用SplFixedArray创建固定大小的数组
PHP在定义数组的时候不用像C或Java一样定义数组大小,PHP数组可以根据我们的需要增长或收缩.但这种灵活性在内存使用方面带来很大的不便. 而PHP中可以使用SplFixedArray创建固定大小的 ...
- arcgis for android100.x 禁止地图旋转
by 蔡建良2019-5-16 关键类: com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener DefaultMapVie ...
- C# explicit interface implementation(显式接口实现)
C# explicit interface implementation 某个类要实现两个包含相同方法名的接口, 应该如何实现这两个方法? namespace ExplicitInterfaceImp ...
- 通过gpio控制一个进程开启或关闭
目标: 板子上有个进程需要通过读取gpio的值, 当gpio值为1 时, 开启指定的进程,当gpio为0时, 杀掉这个指定的进程. #include <stdio.h> int main( ...
- VS2019编译 当前最新版chromium
之前编译过webrtc和chromium, 由于长时间没用,被我删除了, 最近在最新版本的google浏览器上遇到了播放器兼容性问题,老版本的google浏览器是没问题,IE, 火狐浏览器也没问题, ...
- 1 使用webpack搭建vue开发环境
1 先去node.js官网下载nodejs并且安装 安装成功之后在命令行输入node -v 回车,npm -v回车如果显示对应的版本号,说明node安装成功,自带的npm也安装成功 2 在d盘下创建一 ...
- TSN(Temporal Segment Networks)
一.算法详解 二.代码解析(pytorch版) 训练代码:https://blog.csdn.net/u014380165/article/details/79058147 测试代码:https:// ...
- redis目录
一.redis基础 二.django-redis 三.redis数据操作详解 四.redis持久化