Spec-Zone.ru › JavaScript

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
});

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

Спецификация
Спецификация языка ECMAScript® 2027
# sec-object.getownpropertydescriptors

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

Десктопные Мобильные Серверные
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API