Reflect
定义
- 它是一个对象,主要提供了很多操作js对象的方法,像Object中操作对象的方法,一般都通过内置的方法进行操作
使用场景:
- 和Proxy搭配使用
- Q: 那为什么要用Reflect而不是Object?
A: Object为构造函数,这些操作不合适,并且还包含了in、delete操作符,让JS看起来会有一些奇怪注意: 如果可以使用Reflect那么尽量使用Reflect
Reflect常见方法
- 定义: 和proxy的13种捕获方法一一对应
const obj = { name:'nano', age: 18 } const objProx = new Proxy(obj,{ set(target,key,value,receiver){ return Reflect.set(target,key,value,receiver) } }) objProx.age = 20 console.log(obj) --> { name:'nano', age: 18 }
receiver参数的作用以及与Proxy中的receiver区别
- 定义: Reflect中的receiver是改变原对象中的函数的this指向
- 区别: proxy中的receiver是创建出来的代理对象,Reflect中的receiver是改变原对象中的函数的this指向
注意:只有get和set函数有receiver参数
Reflect的construct方法(用的较少)
- 定义: 更改构造函数的类型
- 使用: Reflect.construct( 需要转变类型的构造函数, 构造函数参数(数组形式), 目标类型的构造函数 )
function Student( name,age ){ this.name = name this.age = age } function Teacher(){ } let teacher = Reflect.construct( Student,['nano',18], Teacher ) console.log(teacher) --> 就变成了Teacher类型
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!