Reflect出现的目的

1.把Object对象中的一些明显属于语言内部的方法,放到Reflect对象上,比如Object.defineProperty。就是说可以把Reflect对象上可以拿到语言内部的方法。
2.修改某些Object方法的返回结果,让其变得合理。Object.defineProperty(target, property, attributes)在无法定义属性时,会抛出一个错误,而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对象上找到对应的方法。

Reflect中包含的方法

Reflect.apply(target,thisArg,args)
Reflect.construct(target,args)
Reflect.get(target,name,receiver)
Reflect.set(target,name,value,receiver)
Reflect.defineProperty(target,name,desc)
Reflect.deleteProperty(target,name)
Reflect.has(target,name)
Reflect.ownKeys(target)
Reflect.isExtensible(target)
Reflect.preventExtensions(target)
Reflect.getOwnPropertyDescriptor(target, name)
Reflect.getPrototypeOf(target)
Reflect.setPrototypeOf(target, prototype)


jyren_Rachel
107 声望4 粉丝

« 上一篇
ES6: Proxy
下一篇 »
ES6:Set和Map