Object.getOwnPropertyDescriptor()
Сводка
Метод Object.getOwnPropertyDescriptor()
возвращает дескриптор свойства для собственного свойства (то есть такого, которое находится непосредственно в объекте, а не получено через цепочку прототипов) переданного объекта.
Синтаксис
Object.getOwnPropertyDescriptor(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
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-object.getownpropertydescriptor |
Совместимость с браузерами
BCD tables only load in the browser