Spec-Zone.ru › JavaScript

Object.defineProperties()

Базовый уровень Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Статический метод Object.defineProperties() определяет новые или изменяет существующие свойства непосредственно на объекте и возвращает этот объект.

Попробуйте

const object = {};

Object.defineProperties(object, {
  property1: {
    value: 42,
    writable: true,
  },
  property2: {},
});

console.log(object.property1);
// Expected output: 42

Синтаксис

Object.defineProperties(obj, props)

Параметры

obj
Объект, на котором определяются или изменяются свойства.
props

Объект, чьи ключи представляют имена свойств, которые должны быть определены или изменены, а чьи значения являются объектами, описывающими эти свойства. Каждое значение в props должно быть либо дескриптором данных, либо дескриптором доступа; оно не может быть обоими (см. Object.defineProperty() для получения дополнительной информации).

Дескрипторы данных и дескрипторы доступа могут опционально содержать следующие ключи:

configurable
true тогда и только тогда, когда тип этого дескриптора свойства может быть изменен, и если свойство может быть удалено из соответствующего объекта. По умолчанию — false.
enumerable
true тогда и только тогда, когда это свойство отображается при перечислении свойств соответствующего объекта. По умолчанию — false.

Дескриптор данных также имеет следующие опциональные ключи:

value
Значение, связанное со свойством. Может быть любым допустимым значением JavaScript (число, объект, функция и т. д.). По умолчанию — undefined.
writable
true тогда и только тогда, когда значение, связанное со свойством, может быть изменено с помощью оператора присваивания. По умолчанию — false.

Дескриптор доступа также имеет следующие опциональные ключи:

get
Функция, которая служит геттером для свойства, или undefined, если геттера нет. Возвращаемое значение функции будет использоваться как значение свойства. По умолчанию — undefined.
set
Функция, которая служит сеттером для свойства, или undefined, если сеттера нет. Функция получит в качестве единственного аргумента новое значение, присваиваемое свойству. По умолчанию — undefined.

Если дескриптор не имеет ни одного из ключей value, writable, get и set, он рассматривается как дескриптор данных. Если дескриптор имеет как value или writable, так и get или set ключи, генерируется исключение.

Возвращаемое значение

Объект, который был передан функции.

Примеры

Использование Object.defineProperties

const obj = {};
Object.defineProperties(obj, {
  property1: {
    value: true,
    writable: true,
  },
  property2: {
    value: "Hello",
    writable: false,
  },
  // etc. etc.
});

Спецификации

Спецификация
Спецификация языка ECMAScript® 2027
# sec-object.defineproperties

Совместимость с браузерами

Настольные Мобильные Серверные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
defineProperties
5
12
4
11.6
5
18
4
12
5
1.0
4.4
5
1.0.0
1.0
0.10.0

См. также

  • Полифилл Object.defineProperties в core-js
  • Полифилл es-shims Object.defineProperties
  • Object.defineProperty()
  • Object.keys()
  • Перечисляемость и владение свойствами

© 2005–2025 MDN 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/Object/defineProperties

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API