Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

Метод 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() для поверхностного копирования между двумя неизвестными объектами:

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

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

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

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

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

Спецификация Статус Комментарий
ECMAScript Latest Draft (ECMA-262)
Определение 'Object.getOwnPropertyDescriptors' в этой спецификации.
Черновик Начальное определение в ECMAScript 2017.
ECMAScript 2017 (ECMA-262)
Определение 'Object.getOwnPropertyDescriptors' в этой спецификации.
Стандарт  

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

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidEdge MobileFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
getOwnPropertyDescriptorsChrome Полная поддержка 54Edge Полная поддержка 15Firefox Полная поддержка 50IE Нет поддержки НетOpera Полная поддержка 41Safari Полная поддержка 10WebView Android Полная поддержка 54Chrome Android Полная поддержка 54Edge Mobile Полная поддержка ДаFirefox Android Полная поддержка 50Opera Android ? Safari iOS ? Samsung Internet Android Полная поддержка 6.0nodejs Полная поддержка 7.0.0
Полная поддержка 7.0.0
Полная поддержка 6.5.0
Отключено
Отключено From version 6.5.0: this feature is behind the --harmony runtime flag.

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.

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

Метки документа и участники

Внесли вклад в эту страницу: mdnwebdocs-bot, Akh-rman
Обновлялась последний раз: mdnwebdocs-bot,