Object.getOwnPropertyDescriptor()

Метод Object.getOwnPropertyDescriptor() повертає дескриптор властивості для особистої властивості (такої, що присутня безпосередньо на об'єкті, а не у ланцюжку його прототипів) наданого об'єкта.

Синтаксис

Object.getOwnPropertyDescriptor(obj, prop)

Параметри

obj
Об'єкт, в якому потрібно знайти властивість.
prop
Ім'я або символ властивості, опис якої отримується.

Значення, що повертається

Дескриптор наданої властивості, якщо така існує на об'єкті, інакше undefined.

Опис

Цей метод дозволяє вивчити докладний опис властивості. Властивість у JavaScript складається з імені у вигляді рядка або символа та дескриптора властивості. Більше інформації щодо типів дескрипторів властивостей та їхніх атрибутів можна знайти у статті Object.defineProperty().

Дескриптор властивості - це запис, що має деякі з наступних атрибутів:

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

Приклади

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 = { [Symbol.for('baz')]: 73 }
d = Object.getOwnPropertyDescriptor(o, Symbol.for('baz')); 
// 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');
// d дорівнює {
//   value: 8675309,
//   writable: false,
//   enumerable: false,
//   configurable: false
// }

Примітки

У ES5, якщо перший аргумент цього методу не є об'єктом (є примітивом), це спричинить помилку TypeError. У ES2015 перший аргумент, що не є об'єктом, буде спочатку приведений до об'єкта.

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

Object.getOwnPropertyDescriptor('foo', 0);
// Об'єкт, повернений кодом ES2015: {
//   configurable: false,
//   enumerable: true,
//   value: "f",
//   writable: false
// }

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

Специфікація Статус Коментар
ECMAScript 5.1 (ECMA-262)
The definition of 'Object.getOwnPropertyDescriptor' in that specification.
Standard Початкове визначення. Реалізоване у JavaScript 1.8.5.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Object.getOwnPropertyDescriptor' in that specification.
Standard
ECMAScript Latest Draft (ECMA-262)
The definition of 'Object.getOwnPropertyDescriptor' in that specification.
Draft

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
getOwnPropertyDescriptorChrome Full support 5Edge Full support 12Firefox Full support 4IE Full support 8Opera Full support 12Safari Full support 5WebView Android Full support YesChrome Android Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

Див. також