ES6 Reflect
简单谈谈
Reflect
:反射,语言层面上的内容,在 ES6
中其出现的目的主要有以下几个:
- 将
Object
下属于语言内部的方法,放到Reflect
上,让Object
更加纯粹。 - 修正之前在
Object
下的一些方法的返回值不合理照成的逻辑混乱。 - 将命令式的行为变成函数行为,如:
name in obj
==>Reflect.has(obj, name)
。 - 与
Proxy
下的方法一一对应,Proxy
可以更方便的完成默认行为的调用。
拥有的方法
目前一共有 13
个方法,与 Proxy
下的方法一一对应,直接调用这些方法就完成了 Proxy
默认的行为。
- Reflect.apply(target, ctx, args)
- Reflect.construct(target, args)
- Reflect.get(target, key, receiver)
- Reflect.set(target, key, value, receiver)
- Reflect.defineProperty(target, key, desc)
- Reflect.deleteProperty(target, key)
- Reflect.has(target, key)
- Reflect.ownKeys(target)
- Reflect.isExtensible(target)
- Reflect.preventExtensions(target)
- Reflect.getOwnPropertyDescriptor(target, key)
- Reflect.getPrototypeOf(target)
- Reflect.setPrototypeOf(target, prototype)
其作用与 Proxy
中的差不多,只不过一个进行拦截,一个进行操作。