Object.getOwnPropertyDescriptor()
Базовый уровень Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Статический метод Object.getOwnPropertyDescriptor() возвращает объект, описывающий конфигурацию определенного свойства данного объекта (то есть свойства, присутствующего непосредственно в объекте, а не в цепочке прототипов объекта). Возвращенный объект является изменяемым, но его изменение не влияет на конфигурацию исходного свойства.
Попробуйте
const object = {
foo: 42,
};
const descriptor = Object.getOwnPropertyDescriptor(object, "foo");
console.log(descriptor.configurable);
// Expected output: true
console.log(descriptor.value);
// Expected output: 42
Синтаксис
Object.getOwnPropertyDescriptor(obj, prop)
Параметры
-
obj - Объект, в котором следует искать свойство.
-
prop - Имя или
Symbolсвойства, описание которого должно быть получено.
Возвращаемое значение
Дескриптор свойства для данного свойства, если оно существует в объекте, иначе undefined.
Описание
Этот метод позволяет изучить точное описание свойства. Свойство в JavaScript состоит либо из строкового имени, либо из Symbol, и дескриптора свойства. Дополнительную информацию о типах дескрипторов свойств и их атрибутах можно найти в Object.defineProperty().
Дескриптор свойства — это запись со следующими атрибутами:
-
value - Значение, связанное со свойством (только для дескрипторов данных).
-
writable true, если и только если значение, связанное со свойством, может быть изменено (только для дескрипторов данных).-
get - Функция, которая служит геттером для свойства, или
undefined, если геттера нет (только для дескрипторов доступа). -
set - Функция, которая служит сеттером для свойства, или
undefined, если сеттера нет (только для дескрипторов доступа). -
configurable true, если и только если тип этого дескриптора свойства может быть изменен и если свойство может быть удалено из соответствующего объекта.-
enumerable true, если и только если это свойство отображается при перечислении свойств соответствующего объекта.
Примеры
Использование Object.getOwnPropertyDescriptor()
let o, d;
o = {
get foo() {
return 17;
},
};
d = Object.getOwnPropertyDescriptor(o, "foo");
console.log(d);
// {
// configurable: true,
// enumerable: true,
// get: [Function: get foo],
// set: undefined
// }
o = { bar: 42 };
d = Object.getOwnPropertyDescriptor(o, "bar");
console.log(d);
// {
// configurable: true,
// enumerable: true,
// value: 42,
// writable: true
// }
o = { [Symbol.for("baz")]: 73 };
d = Object.getOwnPropertyDescriptor(o, Symbol.for("baz"));
console.log(d);
// {
// configurable: true,
// enumerable: true,
// value: 73,
// writable: true
// }
o = {};
Object.defineProperty(o, "qux", {
value: 8675309,
writable: false,
enumerable: false,
});
d = Object.getOwnPropertyDescriptor(o, "qux");
console.log(d);
// {
// value: 8675309,
// writable: false,
// enumerable: false,
// configurable: false
// }
Приведение к объекту не-объектов
В ES5, если первый аргумент этого метода не является объектом (примитивом), это вызовет TypeError. В ES2015 первый аргумент, не являющийся объектом, будет сначала приведён к объекту.
Object.getOwnPropertyDescriptor("foo", 0);
// TypeError: "foo" is not an object // ES5 code
Object.getOwnPropertyDescriptor("foo", 0);
// Object returned by ES2015 code: {
// configurable: false,
// enumerable: true,
// value: "f",
// writable: false
// }
Спецификации
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 | |
getOwnPropertyDescriptor |
5 |
12 |
4 |
12 |
5 |
18 |
4 |
12 |
5 |
1.0 |
4.4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
Смотрите также
© 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/getOwnPropertyDescriptor