Reflect
Reflect
是一个内置的对象,它提供拦截 JavaScript 操作的方法。这些方法与proxy handlers的方法相同。
Reflect
不是一个函数对象,因此它是不可构造的。
描述
与大多数全局对象不同,
Reflect
不是一个构造函数。你不能将其与一个
Math
对象)。
方法
Reflect
对象提供以下静态函数,它们具有与
Object
上的对应方法相同。
-
Reflect.apply()
-
对一个函数进行调用操作,同时可以传入一个数组作为调用参数。和
Function.prototype.apply()
功能类似。 -
Reflect.construct()
-
对构造函数进行
new
操作,相当于执行new target(...args)
。 -
Reflect.defineProperty()
-
和
Object.defineProperty()
类似。 -
Reflect.deleteProperty()
-
作为函数的
delete
操作符,相当于执行delete target[name]
。 -
Reflect.enumerate()
-
该方法会返回一个包含有目标对象身上所有可枚举的自身字符串属性以及继承字符串属性的迭代器,
for...in
操作遍历到的正是这些属性。 -
Reflect.get()
-
获取对象身上某个属性的值,类似于
target[name]。
-
Reflect.getOwnPropertyDescriptor()
-
类似于
Object.getOwnPropertyDescriptor()
。 -
Reflect.getPrototypeOf()
-
类似于
Object.getPrototypeOf()
。 -
Reflect.has()
-
判断一个对象是否存在某个属性,和
in
运算符的功能完全相同。 -
Reflect.isExtensible()
-
类似于
Object.isExtensible()
. -
Reflect.ownKeys()
-
返回一个包含所有自身属性(不包含继承属性)的数组。(类似于
Object.keys()
,但不会受enumerable影响
). -
Reflect.preventExtensions()
-
类似于
Object.preventExtensions()
。返回一个Boolean
。 -
Reflect.set()
-
将值分配给属性的函数。返回一个
Boolean
,如果更新成功,则返回true
。 -
Reflect.setPrototypeOf()
-
类似于
Object.setPrototypeOf()
。