Reflect.defineProperty()
TheReflect.defineProperty() defines or modifies a property.
It is similar toObject.defineProperty()
Example
const user = {};
// Add a Property
Reflect.defineProperty(user, "id", {
value: 123,
writable: false
});
Same as usingObject.defineProperty():
Object.defineProperty(user, "id", {
value: 123,
writable: false
});
Reflect.defineProperty() in Proxy
Reflect.defineProperty() must be used in Proxy
If used in a Proxy, thedefineProperty trap must returntrueorfalse.
Object.defineProperty()returns the target objectReflect.defineProperty()returnstrueorfalse
Syntax
Parameters
| Parameter | Description |
|---|---|
| obj | Required. The target object. |
| prop | Required. The property to define. |
| attributes | Optional. An array-like object of property attributes. |
Return Value
| Type | Description |
|---|---|
| Boolean | true if success. false if not. |
Errors
| Type | Description |
|---|---|
| TypeError | Thrown if obj is not an object or attributes is not an object. |
Reflect Methods:
Reflect.apply()
Reflect.construct()
Reflect.defineProperty()
Reflect.deleteProperty()
Reflect.get()
Reflect.getOwnPropertyDescriptor()
Reflect.getPrototypeOf()
Reflect.has()
Reflect.isExtensible()
Reflect.ownKeys()
Reflect.preventExtensions()
Reflect.set()
Reflect.setPrototypeOf()
Browser Support
Reflect.defineProperty() is an ECMAScript6 (ES6 2015) feature.
JavaScript 2015 is supported in all browsers sinceJune 2017:
| Chrome 51 | Edge 15 | Firefox 54 | Safari 10 | Opera 38 |
| May 2016 | Apr 2017 | Jun 2017 | Sep 2016 | Jun 2016 |

