Reflect的详解及用法

Reflect的解释及用法:

首先上来想多说几句,就是前几天看见自己一直订阅的博客发了一个文章,说如何写出一篇垃圾的博文,说的我觉得很有道理,就是有些人在发的时候,基本上就是全抄,但是抄也没事, 至少你要写清楚,保证你写的是对的,更不要上面写了很多但是没有突出重点,什么东西都没有介绍。这样你自己在看的时候什么都没有看清楚。我觉得这个就是基本的原则问题了吧。然后呢 我就在想自己的写的什么样子。我觉得很多我也是参考别人的,会去照着官方解释文档 按照自己的理解的去写出来 记录下来,照着测试一下看看是什么样子的情况,最后放上去。其实很多也是在抄,但是话又说回来了只要这个博客有用,介绍了具体的内容,我就觉得就可以吧。毕竟每个人的水平不一样吗,写底层的文章和介绍使用方法的肯定不是一个层面的吧。所以吗 只要你能写的正确,条理清晰,就可以。

Reflect的简介:

首先这个概念是ES6提出来的,为了操作对象而提供的API ,以下的熟知
Reflect对象是一个全局的普通的对象。Reflect的原型就是Object.

1. 将Object对象的一些明显属于语言内部的方法(比如Obejcet.defineProperty),放到Reflect对象上。现阶段,某些方法同时在Object喝Reflect对象上部署,未来的新方法将只部署在Reflect对象上。也就是说,从reflect对象上可以拿到语言内部的方法。

2. 在使用Object.defineProperty(obj,name,desc)在无法定义属性时,会抛出一个错误,而Reflect.defineProperty(obj,name,desc)则会返回false。

3. 让Object操作都变成函数行为。某些Object操作是命令式,比如name in obj和delete obj[name],而Reflect.has(obj,name)和Reflect.deleteProperty(obj,name)让它们变成了函数行为。

4. Reflect对象的方法与Proxy对象的方法一一对应,只要是Proxy对象的方法,就能在Reflect对象上找到对应的方法。这就让Proxy对象可以方便地调用对应的Reflect方法,完成默认行为,作为修改行为的基础。也就是说,不管Proxy怎么修改默认行为,你总可以在Reflect上获取默认行为。
在这里插入图片描述
操作的方法: 总共就13个 继承了Object 来进行相应的操作
在这里插入图片描述
1 上面这些方法的作用大部分与Object对象的同名方法都是相同的,与Proxy对象的方法一一对应的。我就稍微写用法

2 .在拦截处理数据的时候 ,建议就是使用Reflect来进行操作,13个方法在API文档里面都很清楚,用到去查
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Reflect
举例子:
获取对象中是否存在某一个值

var objDemo = {name: 'smallTanks', job: 'web'};
console.log(Reflect.has(objDemo , 'name'));

//输出--- true

获取数组中的最大值

var arr = [2, 5, 6, 9, 11];
console.log(Reflect.apply(Math.max, Math, arr));   
// 输出--- 11
咫尺远近却无法靠近的那个你,才敢让你发觉你并不孤寂
原文地址:https://www.cnblogs.com/tcz1018/p/14738943.html