Object.getOwnPropertyDescriptors()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Метод Object.getOwnPropertyDescriptors() возвращает все собственные дескрипторы свойств данного объекта.

Интерактивный пример

Синтаксис

Object.getOwnPropertyDescriptors(obj)

Параметры

obj

Объект, для которого нужно получить все собственные дескрипторы свойств.

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

Объект, содержащий все собственные дескрипторы свойств объекта. Может быть пустой объект, если нет свойств.

Описание

Этот метод позволяет изучить точное описание всех собственных свойств объекта. Свойство в JavaScript состоит из строкового имени или Symbol и свойства дескриптора. Дополнительную информацию о типах свойств дескрипторов и их атрибутах можно найти в Object.defineProperty().

Свойство дескриптора это запись с некоторыми из следующих атрибутов:

value

Значение, связанное со свойством (только дескрипторы данных).

writable

true тогда и только тогда когда значение, связанное со свойством, может быть изменено (только дескрипторы данных).

get

Функция, которая служит в качестве получателя для свойства, или undefined если нет получателя (только дескрипторы доступа).

set

Функция, которая служит установщиком для свойства, или undefined если установщика нет (только дескрипторы доступа).

configurable

true тогда и только тогда, когда тип этого свойства дескриптора может быть изменён, и если свойство может быть удалено из соответствующего объекта.

enumerable

true тогда и только тогда, когда это свойство отображается при перечислении свойств соответствующего объекта.

Примеры

Создание поверхностного клона

В то время как метод Object.assign() будет только копировать перечисляемые и собственные свойства из исходного объекта в целевой объект, вы можете использовать этот метод и Object.create() для поверхностного копирования между двумя неизвестными объектами:

js
Object.create(
  Object.getPrototypeOf(obj),
  Object.getOwnPropertyDescriptors(obj),
);

Создание подкласса

Типичный способ создания подкласса это определить подкласс, определить свойства этого экземпляра. Это может быть неудобно особенно для получателей и установщиков. Вместо этого, вы можете использовать этот код для установки прототипа:

js
function superclass() {}
superclass.prototype = {
  // Определите ваши методы и свойства здесь
};
function subclass() {}
subclass.prototype = Object.create(superclass.prototype, {
  // Определите ваши методы и свойства здесь
});

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

Specification
ECMAScript® 2025 Language Specification
# sec-object.getownpropertydescriptors

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

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
getOwnPropertyDescriptors

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Смотрите также