creation

Object.defineProperties

Defines multiple new or modified properties on an object by supplying a descriptors map. The batch-form counterpart of Object.defineProperty.

Object.defineProperties(obj, propsObject)

Parameters

Parameter Purpose
obj The target object
propsObject An object whose keys are property names and values are property descriptors
returns The mutated object

Examples

const o = {};
Object.defineProperties(o, {
  a: { value: 1, enumerable: true },
  b: { value: 2, enumerable: true }
});
console.log(o);

Logs { a: 1, b: 2 }

const o = {};
Object.defineProperties(o, { hidden: { value: 42 } });
console.log(Object.keys(o), o.hidden);

Logs [] 42 — hidden is non-enumerable by default

const src = { a: 1, b: 2 };
const clone = Object.defineProperties({}, Object.getOwnPropertyDescriptors(src));
console.log(clone);

Logs { a: 1, b: 2 } — descriptor-preserving clone

const o = {};
Object.defineProperties(o, {
  full: { get() { return `${this.first} ${this.last}`; }, enumerable: true },
  first: { value: 'Ada', enumerable: true },
  last: { value: 'Lovelace', enumerable: true }
});
console.log(o.full);

Logs 'Ada Lovelace'

Gotcha

Same descriptor defaults as defineProperty — omitted booleans are false. If any single descriptor is invalid the operation throws, but previously-processed descriptors are NOT rolled back.

Related methods

← All JS Object methods · Array methods · Spread vs rest