Reflect
Reflect是一个内置的对象,它提供拦截 JavaScript 操作的方法。这些方法与处理器对象的方法相同。Reflect不是一个函数对象,因此它是不可构造的。
描述
方法
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()返回一个包含所有自身属性(不包含继承属性)的数组。
Reflect.preventExtensions()类似于Object.preventExtensions()。返回一个Boolean。Reflect.set()将值分配给属性的函数。返回一个Boolean,如果更新成功,则返回true。
规范
Specification | Status | Comment |
|---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Reflect' in that specification. | Standard | Initial definition. |
ECMAScript Latest Draft (ECMA-262)The definition of 'Reflect' in that specification. | Draft | Reflect.enumerate has been removed. |
浏览器兼容性
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
Basic support | 49.0 | (Yes) | 42 (42) | No support | No support | 10 |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|---|
Basic support | 49.0 | 49.0 | (Yes) | 42.0 (42) | No support | No support | 10 |
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

