Spec-Zone.ru › JavaScript

Reflect.getOwnPropertyDescriptor()

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2016 года.

Статический метод Reflect.getOwnPropertyDescriptor() похож на Object.getOwnPropertyDescriptor(). Он возвращает дескриптор свойства для заданного свойства, если оно существует в объекте, или undefined в противном случае.

Попробуйте это

const object = {
  property1: 42,
};

console.log(Reflect.getOwnPropertyDescriptor(object, "property1").value);
// Expected output: 42

console.log(Reflect.getOwnPropertyDescriptor(object, "property2"));
// Expected output: undefined

console.log(Reflect.getOwnPropertyDescriptor(object, "property1").writable);
// Expected output: true

Синтаксис

Reflect.getOwnPropertyDescriptor(target, propertyKey)

Параметры

target
Целевой объект, в котором нужно искать свойство.
propertyKey
Имя свойства, для которого нужно получить дескриптор собственного свойства.

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

Объект-дескриптор свойства, если свойство существует как собственное свойство target; в противном случае — undefined.

Исключения

TypeError
Выбрасывается, если target не является объектом.

Описание

Reflect.getOwnPropertyDescriptor() обеспечивает рефлексивную семантику получения дескриптора свойства объекта. Единственное отличие от Object.getOwnPropertyDescriptor() состоит в том, как обрабатываются целевые объекты, не являющиеся объектами. Reflect.getOwnPropertyDescriptor() выбрасывает TypeError, если целевой объект не является объектом, в то время как Object.getOwnPropertyDescriptor() принудительно преобразует его в объект.

Reflect.getOwnPropertyDescriptor() вызывает [[GetOwnProperty]] внутренний метод объекта target.

Примеры

Использование Reflect.getOwnPropertyDescriptor()

Reflect.getOwnPropertyDescriptor({ x: "hello" }, "x");
// {value: "hello", writable: true, enumerable: true, configurable: true}

Reflect.getOwnPropertyDescriptor({ x: "hello" }, "y");
// undefined

Reflect.getOwnPropertyDescriptor([], "length");
// {value: 0, writable: true, enumerable: false, configurable: false}

Отличие от Object.getOwnPropertyDescriptor()

Если аргумент target этого метода не является объектом (примитивом), то это вызовет TypeError. С Object.getOwnPropertyDescriptor первый аргумент, не являющийся объектом, сначала будет принудительно преобразован в объект.

Reflect.getOwnPropertyDescriptor("foo", 0);
// TypeError: "foo" is not non-null object

Object.getOwnPropertyDescriptor("foo", 0);
// { value: "f", writable: false, enumerable: true, configurable: false }

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

Спецификация
Спецификация языка ECMAScript® 2027
# sec-reflect.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
49
12
42
36
10
49
42
36
10
5.0
49
10
1.0.0
1.0
6.0.0

См. также

  • Полифилл Reflect.getOwnPropertyDescriptor в core-js
  • Reflect
  • Object.getOwnPropertyDescriptor()
  • handler.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/Reflect/getOwnPropertyDescriptor

Spec-Zone.ru

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