Reflect.defineProperty()
The Reflect.defineProperty() defines or modifies a property.
It is similar to Object.defineProperty()
Example
// Create an Object
const user = {};
// Add a Property
Reflect.defineProperty(user, "id", {
value: 123,
writable: false
});
Try it Yourself »
Same as using Object.defineProperty():
// Add a Property
Object.defineProperty(user, "id", {
value: 123,
writable: false
});
Try it Yourself »
Reflect.defineProperty() in Proxy
Reflect.defineProperty() must be used in Proxy
If used in a Proxy, the defineProperty trap must return true
or false.
Object.defineProperty()returns the target objectReflect.defineProperty()returnstrueorfalse
Syntax
Reflect.defineProperty(obj, prop, attributes)
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 since June 2017:
| Chrome 51 |
Edge 15 |
Firefox 54 |
Safari 10 |
Opera 38 |
| May 2016 | Apr 2017 | Jun 2017 | Sep 2016 | Jun 2016 |