Object.getOwnPropertyDescriptors()
Базовый уровень Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Статический метод Object.getOwnPropertyDescriptors() возвращает все собственные дескрипторы свойств заданного объекта.
Попробуйте
const object = {
foo: 42,
};
const descriptors = Object.getOwnPropertyDescriptors(object);
console.log(descriptors.foo.writable);
// Expected output: true
console.log(descriptors.foo.value);
// Expected output: 42
Синтаксис
Object.getOwnPropertyDescriptors(obj)
Параметры
-
obj - Объект, для которого необходимо получить все собственные дескрипторы свойств.
Возвращаемое значение
Объект, содержащий все собственные дескрипторы свойств объекта. Может быть пустым объектом, если свойств нет.
Описание
Этот метод позволяет проанализировать точное описание всех собственных свойств объекта. Свойство в JavaScript состоит либо из строкового имени, либо из Symbol и дескриптора свойства. Дополнительную информацию о типах дескрипторов свойств и их атрибутах можно найти в Object.defineProperty().
Дескриптор свойства — это запись со следующими атрибутами:
-
value - Значение, связанное со свойством (только для дескрипторов данных).
-
writable trueтогда и только тогда, когда значение, связанное со свойством, может быть изменено (только для дескрипторов данных).-
get - Функция, которая служит геттером для свойства, или
undefined, если геттер отсутствует (только для дескрипторов доступа). -
set - Функция, которая служит сеттером для свойства, или
undefined, если сеттер отсутствует (только для дескрипторов доступа). -
configurable trueтогда и только тогда, когда тип этого дескриптора свойства может быть изменен, и если свойство может быть удалено из соответствующего объекта.-
enumerable trueтогда и только тогда, когда это свойство отображается при перечислении свойств соответствующего объекта.
Примеры
Создание поверхностной копии
В то время как метод Object.assign() будет копировать только перечисляемые и собственные свойства из исходного объекта в целевой объект, вы можете использовать этот метод и Object.create() для создания поверхностной копии между двумя неизвестными объектами:
Object.create( Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj), );
Создание подкласса
Типичный способ создания подкласса — определить подкласс, установить его прототип равным экземпляру суперкласса, а затем определить свойства для этого экземпляра. Это может быть неудобно, особенно для геттеров и сеттеров. Вместо этого вы можете использовать этот код для установки прототипа:
function superclass() {}
superclass.prototype = {
// Define the superclass constructor, methods, and properties here
};
function subclass() {}
subclass.prototype = Object.create(superclass.prototype, {
// Define the subclass constructor, methods, and properties here
});
Спецификации
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 | |
getOwnPropertyDescriptors |
54 |
15 |
50 |
41 |
10 |
54 |
50 |
41 |
10 |
6.0 |
54 |
10 |
1.0.0 |
1.0 |
7.0.0 |
См. также
- Полифил
Object.getOwnPropertyDescriptorsвcore-js - Полифил es-shims
Object.getOwnPropertyDescriptors Object.getOwnPropertyDescriptor()Object.defineProperty()
© 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/getOwnPropertyDescriptors