Object.defineProperties()
The Object.defineProperties()
static method defines new or
modifies existing properties directly on an object, returning the object.
Try it
Syntax
js
Object.defineProperties(obj, props)
Parameters
obj
-
The object on which to define or modify properties.
props
-
An object whose keys represent the names of properties to be defined or modified and whose values are objects describing those properties. Each value in
props
must be either a data descriptor or an accessor descriptor; it cannot be both (seeObject.defineProperty()
for more details).Data descriptors and accessor descriptors may optionally contain the following keys:
configurable
-
true
if and only if the type of this property descriptor may be changed and if the property may be deleted from the corresponding object. Defaults tofalse
. enumerable
-
true
if and only if this property shows up during enumeration of the properties on the corresponding object. Defaults tofalse
.
A data descriptor also has the following optional keys:
value
-
The value associated with the property. Can be any valid JavaScript value (number, object, function, etc.). Defaults to
undefined
. writable
-
true
if and only if the value associated with the property may be changed with an assignment operator. Defaults tofalse
.
An accessor descriptor also has the following optional keys:
get
-
A function which serves as a getter for the property, or
undefined
if there is no getter. The function's return value will be used as the value of the property. Defaults toundefined
. set
-
A function which serves as a setter for the property, or
undefined
if there is no setter. The function will receive as its only argument the new value being assigned to the property. Defaults toundefined
.
If a descriptor has neither of
value
,writable
,get
andset
keys, it is treated as a data descriptor. If a descriptor has bothvalue
orwritable
andget
orset
keys, an exception is thrown.
Return value
The object that was passed to the function.
Examples
Using Object.defineProperties
js
const obj = {};
Object.defineProperties(obj, {
property1: {
value: true,
writable: true,
},
property2: {
value: "Hello",
writable: false,
},
// etc. etc.
});
Specifications
Specification |
---|
ECMAScript Language Specification # sec-object.defineproperties |
Browser compatibility
BCD tables only load in the browser