一.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对象的更多相关文章

  1. es6 Reflect对象详解

    Reflect是ES6为操作对象而提供的新API,而这个API设计的目的只要有: 将Object对象的一些属于语言内部的方法放到Reflect对象上,从Reflect上能拿到语言内部的方法.如:Obj ...

  2. ES6引入的Reflect对象目的何在?

    Reflect对象其实就是为了取代Object对象.取代原因有一下几点: 1)Object对象的一些内部方法放在了Reflect上面,比如:Object.defineProperty.主要是优化了语言 ...

  3. ES6新特性:Javascript中的Reflect对象

    Reflect介绍: Reflect这个对象在我的node(v4.4.3)中还没有实现, babel(6.7.7)也没有实现 ,新版本的chrome是支持的, ff比较早就支持Proxy和Reflec ...

  4. 12,13 Proxy和Reflect

    Proxy和Reflect Proxy(代理) Proxy用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种"元编程"(meta programming),即对编程 ...

  5. ES6 Proxy和Reflect(下)

    construct() construct方法用于拦截new命令. var handler = { construct (target, args) { return new target(...ar ...

  6. es6重点笔记:Symbol,Set,Map,Proxy,Reflect

    一,Symbol 原始数据类型,不是对象,它是JavaScript第七种数据类型,表示独一无二的值.Symbol是通过Symbol函数生成的: let s = Symbol(); typeof s / ...

  7. es6学习笔记-Proxy、Reflect、Promise

    Proxy Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程. Proxy 可以理解成,在目标对象之前 ...

  8. 深入理解 ES6中的 Reflect

    阅读目录 一:Reflect.get(target, name, receiver) 二:Reflect.set(target,name,value,receiver) 三:Reflect.apply ...

  9. ES6走一波 Proxy/Reflect

    Proxy:像拦截器,对目标对象修改等进行拦截,是一种元编程(meta programming),即修改JS语言本身. //生成proxy实例,两个参数都是对象,targetObj是要拦截的目标对象, ...

随机推荐

  1. ORACLE的客户端、后台进程

    Oracle数据库进程之服务器进程详解 Oracle实例主要有三类进程:服务器进程.后台进程和从属进程.这里介绍一下Oracle数据库服务器进程的相关知识 Oracle数据库中的各个进程要完成某个特定 ...

  2. Django基础cookie和session

    Django基础cookie和session 1.会话跟踪 ​ 什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如给10086打个电话,你就是客户端, ...

  3. 使用SplFixedArray创建固定大小的数组

    PHP在定义数组的时候不用像C或Java一样定义数组大小,PHP数组可以根据我们的需要增长或收缩.但这种灵活性在内存使用方面带来很大的不便. 而PHP中可以使用SplFixedArray创建固定大小的 ...

  4. arcgis for android100.x 禁止地图旋转

    by 蔡建良2019-5-16 关键类: com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener DefaultMapVie ...

  5. C# explicit interface implementation(显式接口实现)

    C# explicit interface implementation 某个类要实现两个包含相同方法名的接口, 应该如何实现这两个方法? namespace ExplicitInterfaceImp ...

  6. 通过gpio控制一个进程开启或关闭

    目标: 板子上有个进程需要通过读取gpio的值, 当gpio值为1 时, 开启指定的进程,当gpio为0时, 杀掉这个指定的进程. #include <stdio.h> int main( ...

  7. VS2019编译 当前最新版chromium

    之前编译过webrtc和chromium, 由于长时间没用,被我删除了, 最近在最新版本的google浏览器上遇到了播放器兼容性问题,老版本的google浏览器是没问题,IE, 火狐浏览器也没问题, ...

  8. 1 使用webpack搭建vue开发环境

    1 先去node.js官网下载nodejs并且安装 安装成功之后在命令行输入node -v 回车,npm -v回车如果显示对应的版本号,说明node安装成功,自带的npm也安装成功 2 在d盘下创建一 ...

  9. TSN(Temporal Segment Networks)

    一.算法详解 二.代码解析(pytorch版) 训练代码:https://blog.csdn.net/u014380165/article/details/79058147 测试代码:https:// ...

  10. redis目录

    一.redis基础 二.django-redis 三.redis数据操作详解 四.redis持久化