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是要拦截的目标对象, ...
随机推荐
- 第4章:LeetCode--链表
2. Add Two Numbers: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNo ...
- Django 1.8.2 admin 数据库操作按下保存按钮出错
Django报错:Runtimeerror: generator raised StopIteration python版本太新不兼容照成,下载python3.6就行了
- python_openCV例程遇到error: (-215) !empty() in function cv::CascadeClassifier::detectMultiScale的简单解决方法
需要把haar分类器训练的结果xml数据放在名为haarcascades的文件夹下进行调用. 将: face_cascade = cv2.CascadeClassifier('haarcascade_ ...
- WUST Oracle数据库 实验一实验二
链接:https://pan.baidu.com/s/1hCzvTLzXhyItP2gD_69gzg 提取码:j68f 复制这段内容后打开百度网盘手机App,操作更方便哦
- Ubuntu 搭建 配置 nfs服务器
什么是NFS? NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NF ...
- linux 用户切换组
问题: 因为默认的的网站路径 /var/www/html 是root 用户 root组的, 想要修改什么的需要用sudo 很麻烦. 解决: 将当前用户 hehecat加入至root组,使之有权限对目录 ...
- js中this关键字用法详解
1.全局环境中的this 在全局环境中,this 指向全局对象Global,即 window 对象 如: alert(this); // 显示 [object Window] alert(this = ...
- c#排序sql语句查询
排序存储的效果图: 根据id排序的sql存储过程: DECLARE @type varchar() ' ' Order By charindex(','+ convert(varchar,id) +' ...
- MVC方式显示数据(手动添加数据)
Model添加类 Customers using System; using System.Collections.Generic; using System.Linq; using System.W ...
- Netty UDP 使用采坑
使用Netty搭建UDP服务收集日志,使用过程中发现,部分日志接收不到,排查发现,都是大日志记录不到,后查询相关文档进行如下修改 EventLoopGroup workerGroup = new Ni ...