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()。
