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.
});
Спецификации
Совместимость с браузерами
| Настольные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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