Reflect.getOwnPropertyDescriptor()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.

Die Reflect.getOwnPropertyDescriptor() statische Methode ist wie Object.getOwnPropertyDescriptor(). Sie gibt einen Eigenschaftsbezeichner der angegebenen Eigenschaft zurück, wenn sie im Objekt existiert, andernfalls undefined.

Probieren Sie es aus

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

Syntax

js
Reflect.getOwnPropertyDescriptor(target, propertyKey)

Parameter

target

Das Zielobjekt, in dem nach der Eigenschaft gesucht wird.

propertyKey

Der Name der Eigenschaft, für die ein eigener Eigenschaftsbezeichner erhalten werden soll.

Rückgabewert

Ein Eigenschaftsbezeichnerobjekt, wenn die Eigenschaft als eigene Eigenschaft von target existiert; andernfalls undefined.

Ausnahmen

TypeError

Wird ausgelöst, wenn target kein Objekt ist.

Beschreibung

Reflect.getOwnPropertyDescriptor() bietet die reflektierende Semantik zum Abrufen des Eigenschaftsbezeichners eines Objekts. Der einzige Unterschied zu Object.getOwnPropertyDescriptor() liegt in der Handhabung von Nicht-Objekt-Zielen. Reflect.getOwnPropertyDescriptor() löst einen TypeError aus, wenn das Ziel kein Objekt ist, während Object.getOwnPropertyDescriptor() es zu einem Objekt zwingt.

Reflect.getOwnPropertyDescriptor() ruft die [[GetOwnProperty]] interne Objektmethode von target auf.

Beispiele

Verwendung von Reflect.getOwnPropertyDescriptor()

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

Unterschied zu Object.getOwnPropertyDescriptor()

Wenn das target-Argument dieser Methode kein Objekt ist (ein Primitivwert), wird ein TypeError ausgelöst. Bei Object.getOwnPropertyDescriptor wird ein erstes Argument, das kein Objekt ist, zunächst in ein Objekt umgewandelt.

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

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

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-reflect.getownpropertydescriptor

Browser-Kompatibilität

Siehe auch