Object.getOwnPropertyDescriptors()

Метод 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

Сумісність з веб-переглядачами

BCD tables only load in the browser

Див. також