Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. Eingebaute Standardobjekte
  5. Reflect

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

Reflect

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⁩.

DasReflect Namespace-Objekt enthält statische Methoden zum Aufrufen von abfangbaren JavaScript-Objekt-internen Methoden. Die Methoden sind dieselben wie die derProxy-Handler.

Beschreibung

Anders als die meisten globalen Objekte istReflect kein Konstruktor. Sie können es weder mit demnew-Operator verwenden noch dasReflect-Objekt als Funktion aufrufen. Alle Eigenschaften und Methoden vonReflect sind statisch (genauso wie dasMath-Objekt).

DasReflect-Objekt bietet eine Sammlung von statischen Funktionen, die die gleichen Namen wie dieProxy-Handler-Methoden haben.

Der Hauptverwendungszweck vonReflect besteht darin, das Standard-Sichtungsverhalten inProxy-Handler-Fallen bereitzustellen. EineFalle wird verwendet, um eine Operation an einem Objekt abzufangen – sie bietet eine benutzerdefinierte Implementierung für eineObjekt-interne Methode. DieReflect API wird verwendet, um die entsprechende interne Methode aufzurufen. Zum Beispiel erstellt der folgende Code einen Proxyp mit einerdeleteProperty-Falle, die die[[Delete]] interne Methode abfängt.Reflect.deleteProperty() wird verwendet, um das Standardverhalten von[[Delete]] direkt auftargetObject aufzurufen. Sie können es durchdelete ersetzen, aber die Verwendung vonReflect erspart Ihnen, sich an die Syntax zu erinnern, die jeder internen Methode entspricht.

js
const p = new Proxy(  {},  {    deleteProperty(targetObject, property) {      // Custom functionality: log the deletion      console.log("Deleting property:", property);      // Execute the default introspection behavior      return Reflect.deleteProperty(targetObject, property);    },  },);

DieReflect-Methoden ermöglichen auch eine feinere Kontrolle darüber, wie die interne Methode aufgerufen wird. Zum Beispiel istReflect.construct() der einzige Weg, eine Ziel-Funktion mit einem bestimmtennew.target-Wert zu konstruieren. Wenn Sie dennew-Operator verwenden, um eine Funktion aufzurufen, ist dernew.target Wert immer die Funktion selbst. Dies hat wichtige Auswirkungen beiUnterklassen. Ein weiteres Beispiel:Reflect.get() ermöglicht es Ihnen, einenGetter mit einem benutzerdefiniertenthis-Wert auszuführen, währendEigenschaftendefinitoren immer das aktuelle Objekt alsthis-Wert verwenden.

Fast das Verhalten jederReflect-Methode kann mit einer anderen Syntax oder Methode erreicht werden. Einige dieser Methoden haben entsprechende statische Methoden mit demselben Namen inObject, obwohl es einige subtile Unterschiede gibt. Für die genauen Unterschiede siehe die Beschreibung jederReflect-Methode.

Statische Eigenschaften

Reflect[Symbol.toStringTag]

Der Anfangswert der[Symbol.toStringTag]-Eigenschaft ist der String"Reflect". Diese Eigenschaft wird inObject.prototype.toString() verwendet.

Statische Methoden

Reflect.apply()

Ruft einetarget-Funktion mit Argumenten wie imargumentsList-Parameter angegeben auf. Siehe auchFunction.prototype.apply().

Reflect.construct()

Dernew-Operator als Funktion. Entspricht dem Aufruf vonnew target(...argumentsList). Ermöglicht auch die Angabe eines anderen Prototyps.

Reflect.defineProperty()

Ähnlich wieObject.defineProperty(). Gibt einen booleschen Wert zurück, dertrue ist, wenn die Eigenschaft erfolgreich definiert wurde.

Reflect.deleteProperty()

Derdelete-Operator als Funktion. Entspricht dem Aufruf vondelete target[propertyKey].

Reflect.get()

Gibt den Wert der Eigenschaft zurück. Funktioniert wie das Holen einer Eigenschaft von einem Objekt (target[propertyKey]) als Funktion.

Reflect.getOwnPropertyDescriptor()

Ähnlich wieObject.getOwnPropertyDescriptor(). Gibt einen Eigenschaftsbeschreiber der angegebenen Eigenschaft zurück, wenn er im Objekt existiert, andernfallsundefined.

Reflect.getPrototypeOf()

Gleich wieObject.getPrototypeOf().

Reflect.has()

Gibt einen booleschen Wert zurück, der angibt, ob das Ziel die Eigenschaft hat. Entweder als eigene oder geerbte. Funktioniert wie derin-Operator als Funktion.

Reflect.isExtensible()

Gleich wieObject.isExtensible(). Gibt einen booleschen Wert zurück, dertrue ist, wenn das Ziel erweiterbar ist.

Reflect.ownKeys()

Gibt ein Array der eigenen (nicht geerbten) Eigenschaftsschlüssel des Zielobjekts zurück.

Reflect.preventExtensions()

Ähnlich wieObject.preventExtensions(). Gibt einen booleschen Wert zurück, dertrue ist, wenn das Update erfolgreich war.

Reflect.set()

Eine Funktion, die Werte Eigenschaften zuweist. Gibt einen booleschen Wert zurück, dertrue ist, wenn das Update erfolgreich war.

Reflect.setPrototypeOf()

Eine Funktion, die den Prototyp eines Objekts festlegt. Gibt einen booleschen Wert zurück, dertrue ist, wenn das Update erfolgreich war.

Beispiele

Erkennen, ob ein Objekt bestimmte Eigenschaften enthält

js
const duck = {  name: "Maurice",  color: "white",  greeting() {    console.log(`Quaaaack! My name is ${this.name}`);  },};Reflect.has(duck, "color");// trueReflect.has(duck, "haircut");// false

Rückgabe der eigenen Schlüssel des Objekts

js
Reflect.ownKeys(duck);// [ "name", "color", "greeting" ]

Hinzufügen einer neuen Eigenschaft zum Objekt

js
Reflect.set(duck, "eyes", "black");// returns "true" if successful// "duck" now contains the property "eyes: 'black'"

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-reflect-object

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp