Метод Object.getOwnPropertyDescriptors() повертає дескриптори всіх особистих властивостей наданого об'єкта.
Синтаксис
Object.getOwnPropertyDescriptors(obj)
Параметри
obj- Об'єкт, для якого потрібно отримати дескриптори всіх особистих властивостей.
Значення, що повертається
Об'єкт, що містить дескриптори всіх особистих властивостей об'єкта. Може бути порожній об'єкт, якщо властивостей немає.
Опис
Цей метод дозволяє вивчити докладний опис усіх особистих властивостей об'єкта. Властивість у JavaScript складається з імені у вигляді рядка або символа та дескриптора властивості. Більше інформації щодо типів дескрипторів властивостей та їхніх атрибутів можна знайти у статті 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 = {
// Визначте тут свої методи та властивості
};
function subclass() {}
subclass.prototype = Object.create(
superclass.prototype,
{
// Визначте тут свої методи та властивості
}
);
Специфікації
| Специфікація | Статус | Коментар |
|---|---|---|
| ECMAScript (ECMA-262) The definition of 'Object.getOwnPropertyDescriptors' in that specification. |
Living Standard | Початкове визначення у ECMAScript 2017. |
| ECMAScript 2017 (ECMA-262) The definition of 'Object.getOwnPropertyDescriptors' in that specification. |
Standard |
Сумісність з веб-переглядачами
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
getOwnPropertyDescriptors | Chrome Full support 54 | Edge Full support 15 | Firefox Full support 50 | IE No support No | Opera Full support 41 | Safari Full support 10 | WebView Android Full support 54 | Chrome Android Full support 54 | Firefox Android Full support 50 | Opera Android Full support 41 | Safari iOS Full support 10 | Samsung Internet Android Full support 6.0 | nodejs
Full support
7.0.0
|
Legend
- Full support
- Full support
- No support
- No support
- User must explicitly enable this feature.
- User must explicitly enable this feature.