Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

Object.getOwnPropertyDescriptor()

Сводка

Метод Object.getOwnPropertyDescriptor() возвращает дескриптор свойства для собственного свойства (то есть такого, которое находится непосредственно в объекте, а не получено через цепочку прототипов) переданного объекта.

Синтаксис

Object.getOwnPropertyDescriptor(obj, prop)

Параметры

obj
Объект, в котором ищется свойство.
prop
Имя свойства, чьё описание будет возвращено.

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

Дескриптор переданного свойства, если оно присутствует в объекте, либо undefined, если его там нет.

Описание

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

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

value
Значение, ассоциированное со свойством (только в дескрипторе данных).
writable
Значение true, если значение, ассоциированное со свойством, может быть изменено, иначе false (только в дескрипторе данных).
get
Функция, возвращающая значение свойства, либо undefined, если такая функция отсутствует (только в дескрипторе доступа).
set
Функция, изменяющая значение свойства, либо undefined, если такая функция отсутствует (только в дескрипторе доступа).
configurable
Значение true, если тип дескриптора этого свойства может быть изменён и если свойство может быть удалено из содержащего его объекта, иначе false.
enumerable
Значение true, если это свойство доступно при перечислении свойств содержащего его объекта, иначе false.

Примеры

var o, d;

o = { get foo() { return 17; } };
d = Object.getOwnPropertyDescriptor(o, 'foo');
// d равен { configurable: true, enumerable: true, get: /*функция геттера*/, set: undefined }

o = { bar: 42 };
d = Object.getOwnPropertyDescriptor(o, 'bar');
// d равен { configurable: true, enumerable: true, value: 42, writable: true }

o = {};
Object.defineProperty(o, 'baz', { value: 8675309, writable: false, enumerable: false });
d = Object.getOwnPropertyDescriptor(o, 'baz');
// d равен { value: 8675309, writable: false, enumerable: false, configurable: false }

Примечания

В ES5, если первый аргумент метода не является объектом (является примитивным значением), будет выброшено исключение TypeError. В ES6 такой аргумент будет сначала приведён к объекту.

> Object.getOwnPropertyDescriptor('foo', 0)
TypeError: "foo" is not an object  // код ES5

> Object.getOwnPropertyDescriptor('foo', 0)
{ configurable: false, enumerable: true, value: 'f', writable: false }  // код ES6

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

Спецификация Статус Комментарии
ECMAScript 5.1 (ECMA-262)
Определение 'Object.getOwnPropertyDescriptor' в этой спецификации.
Стандарт Изначальное определение. Реализована в JavaScript 1.8.5.
ECMAScript 6 (ECMA-262)
Определение 'Object.getOwnPropertyDescriptor' в этой спецификации.
Кандидат в рекомендации  

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

Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
Базовая поддержка 5 4.0 (2) 8 12 alpha 5
Возможность Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базовая поддержка ? ? ? ? ? ?

На основе таблицы совместимости Kangax.

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

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

 Внесли вклад в эту страницу: Mingun, teoli, pashak
 Обновлялась последний раз: Mingun,