Reflect is a built-in object that provides methods for interceptable JavaScript operations. The methods are the same as those of proxy handlers . Reflect is not a function object, so it's not constructible.

描述

Unlike most global objects, Reflect is not a constructor. You cannot use it with a new operator or invoke the Reflect object as a function. All properties and methods of Reflect are static (just like the Math 对象)。

Reflect object provides the following static functions which have the same names as the proxy handler methods .

Some of these methods are also the same as corresponding methods on Object , although they do have some subtle differences between them.

静态方法

Reflect.apply( target , thisArgument , argumentsList )
Calls a target function with arguments as specified by the argumentsList parameter. See also Function.prototype.apply() .
Reflect.construct( target , argumentsList [, newTarget ])
new operator as a function. Equivalent to calling new target (... argumentsList ) . Also provides the option to specify a different prototype.
Reflect.defineProperty( target , propertyKey , attributes )
类似于 Object.defineProperty() . Returns a 布尔 也就是 true if the property was successfully defined.
Reflect.deleteProperty( target , propertyKey )
delete operator as a function. Equivalent to calling delete target [ propertyKey ] .
Reflect.get( target , propertyKey [, receiver ])
Returns the value of the property. Works like getting a property from an object ( target[propertyKey] ) as a function.
Reflect.getOwnPropertyDescriptor( target , propertyKey )
类似于 Object.getOwnPropertyDescriptor() . Returns a property descriptor of the given property if it exists on the object, undefined 否则。
Reflect.getPrototypeOf( target )
如同 Object.getPrototypeOf() .
Reflect.has( target, propertyKey )
返回 布尔 indicating whether the target has the property. Either as own or inherited. Works like the in operator as a function.
Reflect.isExtensible( target )
如同 Object.isExtensible() . Returns a 布尔 也就是 true if the target is extensible.
Reflect.ownKeys( target )

Returns an array of the target object's own (not inherited) property keys.

Reflect.preventExtensions( target )
类似于 Object.preventExtensions() . Returns a 布尔 也就是 true if the update was successful.
Reflect.set( target , propertyKey , value [, receiver ])
A function that assigns values to properties. Returns a 布尔 也就是 true if the update was successful.
Reflect.setPrototypeOf( target , prototype )
A function that sets the prototype of an object. Returns a 布尔 也就是 true if the update was successful.

范例

Detecting whether an object contains certain properties

const duck = {
  name: 'Maurice',
  color: 'white',
  greeting: function() {
    console.log(`Quaaaack! My name is ${this.name}`);
  }
}
Reflect.has(duck, 'color');
// true
Reflect.has(duck, 'haircut');
// false
					

Returning the object's own keys

Reflect.ownKeys(duck);
// [ "name", "color", "greeting" ]
					

Adding a new property to the object

Reflect.set(duck, 'eyes', 'black');
// returns "true" if successful
// "duck" now contains the property "eyes: 'black'"
					

规范

规范
ECMAScript (ECMA-262)
The definition of 'Reflect' in that specification.

浏览器兼容性

The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request. 更新 GitHub 上的兼容性数据
Desktop Mobile Server
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.js
Reflect Chrome 49 Edge 12 Firefox 42 IE No Opera 36 Safari 10 WebView Android 49 Chrome Android 49 Firefox Android 42 Opera Android 36 Safari iOS 10 Samsung Internet Android 5.0 nodejs 6.0.0
apply Chrome 49 Edge 12 Firefox 42 IE No Opera 36 Safari 10 WebView Android 49 Chrome Android 49 Firefox Android 42 Opera Android 36 Safari iOS 10 Samsung Internet Android 5.0 nodejs 6.0.0
construct Chrome 49 Edge 12 Firefox 42 IE No Opera 36 Safari 10 WebView Android 49 Chrome Android 49 Firefox Android 42 Opera Android 36 Safari iOS 10 Samsung Internet Android 5.0 nodejs 6.0.0
defineProperty Chrome 49 Edge 12 Firefox 42 IE No Opera 36 Safari 10 WebView Android 49 Chrome Android 49 Firefox Android 42 Opera Android 36 Safari iOS 10 Samsung Internet Android 5.0 nodejs 6.0.0
deleteProperty Chrome 49 Edge 12 Firefox 42 IE No Opera 36 Safari 10 WebView Android 49 Chrome Android 49 Firefox Android 42 Opera Android 36 Safari iOS 10 Samsung Internet Android 5.0 nodejs 6.0.0
get Chrome 49 Edge 12 Firefox 42 IE No Opera 36 Safari 10 WebView Android 49 Chrome Android 49 Firefox Android 42 Opera Android 36 Safari iOS 10 Samsung Internet Android 5.0 nodejs 6.0.0
getOwnPropertyDescriptor Chrome 49 Edge 12 Firefox 42 IE No Opera 36 Safari 10 WebView Android 49 Chrome Android 49 Firefox Android 42 Opera Android 36 Safari iOS 10 Samsung Internet Android 5.0 nodejs 6.0.0
getPrototypeOf Chrome 49 Edge 12 Firefox 42 IE No Opera 36 Safari 10 WebView Android 49 Chrome Android 49 Firefox Android 42 Opera Android 36 Safari iOS 10 Samsung Internet Android 5.0 nodejs 6.0.0
has Chrome 49 Edge 12 Firefox 42 IE No Opera 36 Safari 10 WebView Android 49 Chrome Android 49 Firefox Android 42 Opera Android 36 Safari iOS 10 Samsung Internet Android 5.0 nodejs 6.0.0
isExtensible Chrome 49 Edge 12 Firefox 42 IE No Opera 36 Safari 10 WebView Android 49 Chrome Android 49 Firefox Android 42 Opera Android 36 Safari iOS 10 Samsung Internet Android 5.0 nodejs 6.0.0
ownKeys Chrome 49 Edge 12 Firefox 42 IE No Opera 36 Safari 10 WebView Android 49 Chrome Android 49 Firefox Android 42 Opera Android 36 Safari iOS 10 Samsung Internet Android 5.0 nodejs 6.0.0
preventExtensions Chrome 49 Edge 12 Firefox 42 IE No Opera 36 Safari 10 WebView Android 49 Chrome Android 49 Firefox Android 42 Opera Android 36 Safari iOS 10 Samsung Internet Android 5.0 nodejs 6.0.0
set Chrome 49 Edge 12 Firefox 42 IE No Opera 36 Safari 10 WebView Android 49 Chrome Android 49 Firefox Android 42 Opera Android 36 Safari iOS 10 Samsung Internet Android 5.0 nodejs 6.0.0
setPrototypeOf Chrome 49 Edge 12 Firefox 42 IE No Opera 36 Safari 10 WebView Android 49 Chrome Android 49 Firefox Android 42 Opera Android 36 Safari iOS 10 Samsung Internet Android 5.0 nodejs 6.0.0

图例

完整支持

完整支持

不支持

不支持

另请参阅

元数据

  • 最后修改: