Object.getOwnPropertyDescriptor()
Die statische Methode Object.getOwnPropertyDescriptor()
gibt ein
Objekt zurück, das die Konfiguration einer bestimmten Eigenschaft auf einem gegebenen Objekt beschreibt (d.h. eine, die direkt auf einem Objekt vorhanden ist und nicht in der Prototypenkette des Objekts). Das zurückgegebene Objekt ist veränderbar, aber das Verändern hat keinen Einfluss auf die Konfiguration der ursprünglichen Eigenschaft.
Probieren Sie es aus
Syntax
Object.getOwnPropertyDescriptor(obj, prop)
Parameter
Rückgabewert
Ein Eigenschaftsdescriptor der gegebenen Eigenschaft, falls sie auf dem Objekt existiert,
ansonsten undefined
.
Beschreibung
Diese Methode ermöglicht die Untersuchung der genauen Beschreibung einer Eigenschaft. Eine
Eigenschaft in JavaScript besteht entweder aus einem String-Wert-Namen oder einem
Symbol
und einem Eigenschaftsdescriptor. Weitere Informationen über
Eigenschaftsdescriptor-Typen und deren Attribute finden Sie in
Object.defineProperty()
.
Ein Eigenschaftsdescriptor ist ein Datensatz mit einigen der folgenden Attribute:
value
-
Der mit der Eigenschaft verbundene Wert (nur Daten-Deskriptoren).
writable
-
true
, wenn und nur wenn der mit der Eigenschaft verbundene Wert geändert werden kann (nur Daten-Deskriptoren). get
-
Eine Funktion, die als Getter für die Eigenschaft dient, oder
undefined
, wenn es keinen Getter gibt (nur Zugriffs-Deskriptoren). set
-
Eine Funktion, die als Setter für die Eigenschaft dient, oder
undefined
, wenn es keinen Setter gibt (nur Zugriffs-Deskriptoren). configurable
-
true
, wenn und nur wenn die Art dieses Eigenschaftsdescriptors geändert und die Eigenschaft aus dem entsprechenden Objekt gelöscht werden kann. enumerable
-
true
, wenn und nur wenn diese Eigenschaft während der Aufzählung der Eigenschaften auf dem entsprechenden Objekt erscheint.
Beispiele
Verwendung von 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
// }
Nicht-Objekt-Typumwandlung
In ES5 führt ein nicht-Objekt-Argument (ein primitiver Wert) als erstes Argument dieser Methode zu einem TypeError
. In ES2015 wird ein nicht-Objekt-Argument zuerst in ein Objekt umgewandelt.
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
// }
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-object.getownpropertydescriptor |
Browser-Kompatibilität
BCD tables only load in the browser