一.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. python学习-20 集合

    集合set 1.由不同元素组成的集合,集合是一组无序排列的,集合中的元素必须是不可变的 -定义集合 第一种: jh = {1,2,3,4} print(type(jh),jh) 运行结果: <c ...

  2. Python3的内置函数介绍

    Python3的官网链接:https://docs.python.org/3/library/functions.html?highlight=built#ascii 内置函数介绍 abs 绝对值函数 ...

  3. zookeeper-waches

    1. 设置watches data watches: getData() exist() child watches: getChildren() 2. 触发watches setData(): da ...

  4. java实现带过期时间的缓存

    private static ScheduledExecutorService swapExpiredPool = new ScheduledThreadPoolExecutor(10); priva ...

  5. react项目中canvas之画形状(圆形,椭圆形,方形)

    组件DrawShape.jsx如下: import React, { Component } from 'react' // import ClassNames from 'classnames' i ...

  6. ASM实例远程连接

    存在一个软件,远程连接ASM实例 tj2:/picclife/app/grid$ lsnrctl status Listening Endpoints Summary... (DESCRIPTION= ...

  7. Thrift RPC Golang、C++ Example

    Thrift RPC Example 运行 请直接使用即可,无需拉取任何依赖包. cd $GOPATH/src git clone https://github.com/hunterhug/thrif ...

  8. hdu 5900 区间dp

    题意:给你n对pair 里面有两个值,分别是key 和 val .你可以取相邻的两个pair 获得其中的val,前提是两个pair 的key 的 gcd 不为 1.当然你把相邻的两个取走了之后原本不相 ...

  9. 内置函数----format

    说明: 1. 函数功能将一个数值进行格式化显示. 2. 如果参数format_spec未提供,则和调用str(value)效果相同,转换成字符串格式化. >>> format(3.1 ...

  10. springboot启动流程(五)创建ApplicationContext

    所有文章 https://www.cnblogs.com/lay2017/p/11478237.html 正文 springboot在启动过程中将会根据当前应用的类型创建对应的ApplicationC ...