W3cubDocs

/JavaScript

Reflect

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.

Description

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 object).

Methods

The Reflect object provides the following static functions which have the same names as the proxy handler methods. Some of these methods are the same as corresponding methods on Object.

Reflect.apply()
Calls a target function with arguments as specified by the args parameter. See also Function.prototype.apply().
Reflect.construct()
The new operator as a function. Equivalent to calling new target(...args). Provides also the optional possibility to specify a different prototype.
Reflect.defineProperty()
Similar to Object.defineProperty(). Returns a Boolean.
Reflect.deleteProperty()
The delete operator as a function. Equivalent to calling delete target[name].
Reflect.get()
A function that returns the value of properties.
Reflect.getOwnPropertyDescriptor()
Similar to Object.getOwnPropertyDescriptor(). Returns a property descriptor of the given property if it exists on the object, undefined otherwise.
Reflect.getPrototypeOf()
Same as Object.getPrototypeOf().
Reflect.has()
The in operator as function. Returns a boolean indicating whether an own or inherited property exists.
Reflect.isExtensible()
Same as Object.isExtensible().
Reflect.ownKeys()
Returns an array of the target object's own (not inherited) property keys.
Reflect.preventExtensions()
Similar to Object.preventExtensions(). Returns a Boolean.
Reflect.set()
A function that assigns values to properties. Returns a Boolean that is true if the update was successful.
Reflect.setPrototypeOf()
A function that sets the prototype of an object.

Specifications

Browser compatibilityUpdate compatibility data on GitHub

Desktop
Chrome Edge Firefox Internet Explorer Opera Safari
Basic support 49 12 42 No 36 10
apply 49 12 42 No 36 10
construct 49 12 42 No 36 10
defineProperty 49 12 42 No 36 10
deleteProperty 49 12 42 No 36 10
enumerate No ? — 15 No No No No
get 49 12 42 No 36 10
getOwnPropertyDescriptor 49 12 42 No 36 10
getPrototypeOf 49 12 42 No 36 10
has 49 12 42 No 36 10
isExtensible 49 12 42 No 36 10
ownKeys 49 12 42 No 36 10
preventExtensions 49 12 42 No 36 10
set 49 12 42 No 36 10
setPrototypeOf 49 12 42 No 36 10
Mobile
Android webview Chrome for Android Edge Mobile Firefox for Android Opera for Android iOS Safari Samsung Internet
Basic support 49 49 Yes 42 36 10 5.0
apply 49 49 Yes 42 36 10 5.0
construct 49 49 Yes 42 36 10 5.0
defineProperty 49 49 Yes 42 36 10 5.0
deleteProperty 49 49 Yes 42 36 10 5.0
enumerate No No No No No No No
get 49 49 Yes 42 36 10 5.0
getOwnPropertyDescriptor 49 49 Yes 42 36 10 5.0
getPrototypeOf 49 49 Yes 42 36 10 5.0
has 49 49 Yes 42 36 10 5.0
isExtensible 49 49 Yes 42 36 10 5.0
ownKeys 49 49 Yes 42 36 10 5.0
preventExtensions 49 49 Yes 42 36 10 5.0
set 49 49 Yes 42 36 10 5.0
setPrototypeOf 49 49 Yes 42 36 10 5.0
Server
Node.js
Basic support 6.0.0
apply 6.0.0
construct 6.0.0
defineProperty 6.0.0
deleteProperty 6.0.0
enumerate No
get 6.0.0
getOwnPropertyDescriptor 6.0.0
getPrototypeOf 6.0.0
has 6.0.0
isExtensible 6.0.0
ownKeys 6.0.0
preventExtensions 6.0.0
set 6.0.0
setPrototypeOf 6.0.0

See also

© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect