Object.getOwnPropertyDescriptor()

To tłumaczenie jest niekompletne. Pomóż przetłumaczyć ten artykuł z języka angielskiego.

Metoda Object.getOwnPropertyDescriptor() zwraca deskryptor definiujący stan właświwości (właściwość musi być zdefiniowana bezpośrednio na obiekcie, ponieważ metoda nie sprawdza właściwości w łańcuchu prototypów obiektu) dla podanego obiektu.

Składnia

Object.getOwnPropertyDescriptor(obj, prop)

Argumenty

obj
Obiekt, w którym będzie poszukiwana właściwość.
prop
Nazwa właściwości, dla której będzie pobrany deskryptor.

Wartość zwracana

Jeżeli obiekt posiada podaną właściwość, wówczas zostanie zwrócony jej deskryptor, w przeciwnym razie zostanie zwrócony undefined.

Opis

Metoda ta pozwala na dokładne zbadanie stanu właściwości. W rzeczywistości właściwość obiektu w JavaScript to nie tylko jej nazwa oraz wartość ale również odpowiadający jej deskryptor. Więcej informacji o atrybutach deskryptora można znaleźć w Object.defineProperty().

Deskryptor właściwości jest obiektem zawierającym poniższe atrybuty:

value
Wartość związana z odopowiadającą właściwością (tylko dla deskryptorów danych).
writable
Jeżeli true odpowiadająca wartość właściwości może być zmieniona (tylko dla deskryptorów danych).
get
Funkcja, która zwraca getter dla odpowiadającej właściwości lub undefined jeżeli getter nie występuje (tylko dla deskryptorów dostępowych).
set
Funkcja, która zwraca setter dla odpowiadającej właściwości lub undefined jeżeli setter nie występuje (tylko dla deskryptorów dostępowych).
configurable
Jeżeli true odpowiadająca wartość właściwości może być zmieniona (również ich rodzaj - z właściwości danych na właściwość funkcji dostępowych, i odwrotnie) oraz usunięta z odopowiadającego obiektu.
enumerable
Jeżeli true odpowiadająca wartość właściwości będzie dostępna podczas iteracji po właściwosciach odpowiadającego obiektu.

Przykłady

var o, d;

o = { get foo() { return 17; } };
d = Object.getOwnPropertyDescriptor(o, 'foo');
// d is { configurable: true, enumerable: true, get: /*the getter function*/, set: undefined }

o = { bar: 42 };
d = Object.getOwnPropertyDescriptor(o, 'bar');
// d is { 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 is { value: 8675309, writable: false, enumerable: false, configurable: false }

Uwagi

W ES5, jeżeli pierwszy argument dla podanej metody nie jest obiektem (jest typem prostym), wówczas zostanie wyrzucony wyjątek TypeError. Natomiast w ES2015, na typie prymitywnym najpierw zostanie wykonana koercja do obiektu.

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

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

Specyfikacje

Specification Status Comment
ECMAScript 5.1 (ECMA-262)
The definition of 'Object.getOwnPropertyDescriptor' in that specification.
Standard Initial definition. Implemented in JavaScript 1.8.5.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Object.getOwnPropertyDescriptor' in that specification.
Standard  
ECMAScript 2017 Draft (ECMA-262)
The definition of 'Object.getOwnPropertyDescriptor' in that specification.
Draft  

Kompatybilność przeglądarkowa

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 5 4.0 (2) 8 12 5
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support ? ? ? ? ? ?

Zobacz również

Autorzy i etykiety dokumentu

 Autorzy tej strony: mateusz-pietruch
 Ostatnia aktualizacja: mateusz-pietruch,