Spec-Zone.ru › JavaScript

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
// }

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

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

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

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

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

  • Object.defineProperty()
  • Reflect.getOwnPropertyDescriptor()

© 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

Spec-Zone.ru

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