Reflect
ES6中将Object的一些明显属于语言内部的方法移植到了Reflect对象上。
(现阶段,为确保前后兼容性,某些方法会同时存在于Object和Reflect对象上)
Reflect
不是函数对象,所以不可构造(不可以用new
运算符)。
也不能将Reflect
对象作为一个函数来调用(Reflect()
)。
Reflect的所有成员都是静态的(类似于Math
对象)。
API
Reflect
对象提供以下13个静态函数,他们具有与处理器对象handler
的方法相同的名称(一一对应)。
这些方法中的一些与Object
上的方法相同。
Object
的方法参数为object
,而Reflect
的方法参数为target
- ,表示操作目标。
Reflect.getPrototypeOf(target)
获取target的原型
-
Reflect.setPrototypeOf(target, prototype)
设置target的原型 -
Reflect.isExtensible(target)
target是否可扩展 -
Reflect.preventExtensions(target)
阻止target的扩展性 -
Reflect.getOwnPropertyDescriptor(target, prop)
获取target的属性prop的描述器 -
Reflect.defineProperty(target, property, descriptor)
修改target的属性property为descriptor值 -
Reflect.has(target, prop)
target是否有属性prop -
Reflect.get(target, property, receiver)
读属性 -
Reflect.set(target, property, value, receiver)
写属性 -
Reflect.deleteProperty(target, property)
删除target的属性property -
Reflect.ownKeys(target)
返回包含所有自身属性(继承的不算)的数组 -
Reflect.apply(target, thisArg, argumentsList)
对函数target进行调用操作,可传入thisArg可数组作为调用时的参数。 -
Reflect.construct(target, argumentsList, newTarget)
对构造函数进行new
操作,即实例化。