[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Reflect [Back]  [Original]

Reflect - JavaScript | MDN

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

View in English Always switch to English

Reflect

Baseline Weitgehend verfgbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit September 2016 browserbergreifend verfgbar.

Das Reflect Namespace-Objekt enthlt statische Methoden zum Aufrufen von abfangbaren JavaScript-Objekt-internen Methoden. Die Methoden sind dieselben wie die der Proxy-Handler.

In diesem Artikel

Beschreibung

Anders als die meisten globalen Objekte ist Reflect kein Konstruktor. Sie knnen es weder mit dem new-Operator verwenden noch das Reflect-Objekt als Funktion aufrufen. Alle Eigenschaften und Methoden von Reflect sind statisch (genauso wie das Math-Objekt).

Das Reflect-Objekt bietet eine Sammlung von statischen Funktionen, die die gleichen Namen wie die Proxy-Handler-Methoden haben.

Der Hauptverwendungszweck von Reflect besteht darin, das Standard-Sichtungsverhalten in Proxy-Handler-Fallen bereitzustellen. Eine Falle wird verwendet, um eine Operation an einem Objekt abzufangen sie bietet eine benutzerdefinierte Implementierung fr eine Objekt-interne Methode. Die Reflect API wird verwendet, um die entsprechende interne Methode aufzurufen. Zum Beispiel erstellt der folgende Code einen Proxy p mit einer deleteProperty-Falle, die die [[Delete]] interne Methode abfngt. Reflect.deleteProperty() wird verwendet, um das Standardverhalten von [[Delete]] direkt auf targetObject aufzurufen. Sie knnen es durch delete ersetzen, aber die Verwendung von Reflect 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);
    },
  },
);

Die Reflect-Methoden ermglichen auch eine feinere Kontrolle darber, wie die interne Methode aufgerufen wird. Zum Beispiel ist Reflect.construct() der einzige Weg, eine Ziel-Funktion mit einem bestimmten new.target-Wert zu konstruieren. Wenn Sie den new-Operator verwenden, um eine Funktion aufzurufen, ist der new.target Wert immer die Funktion selbst. Dies hat wichtige Auswirkungen bei Unterklassen. Ein weiteres Beispiel: Reflect.get() ermglicht es Ihnen, einen Getter mit einem benutzerdefinierten this-Wert auszufhren, whrend Eigenschaftendefinitoren immer das aktuelle Objekt als this-Wert verwenden.

Fast das Verhalten jeder Reflect-Methode kann mit einer anderen Syntax oder Methode erreicht werden. Einige dieser Methoden haben entsprechende statische Methoden mit demselben Namen in Object, obwohl es einige subtile Unterschiede gibt. Fr die genauen Unterschiede siehe die Beschreibung jeder Reflect-Methode.

Statische Eigenschaften

Reflect[Symbol.toStringTag]

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

Statische Methoden

Reflect.apply()

Ruft eine target-Funktion mit Argumenten wie im argumentsList-Parameter angegeben auf. Siehe auch Function.prototype.apply().

Reflect.construct()

Der new-Operator als Funktion. Entspricht dem Aufruf von new target(...argumentsList). Ermglicht auch die Angabe eines anderen Prototyps.

Reflect.defineProperty()

hnlich wie Object.defineProperty(). Gibt einen booleschen Wert zurck, der true ist, wenn die Eigenschaft erfolgreich definiert wurde.

Reflect.deleteProperty()

Der delete-Operator als Funktion. Entspricht dem Aufruf von delete target[propertyKey].

Reflect.get()

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

Reflect.getOwnPropertyDescriptor()

hnlich wie Object.getOwnPropertyDescriptor(). Gibt einen Eigenschaftsbeschreiber der angegebenen Eigenschaft zurck, wenn er im Objekt existiert, andernfalls undefined.

Reflect.getPrototypeOf()

Gleich wie Object.getPrototypeOf().

Reflect.has()

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

Reflect.isExtensible()

Gleich wie Object.isExtensible(). Gibt einen booleschen Wert zurck, der true ist, wenn das Ziel erweiterbar ist.

Reflect.ownKeys()

Gibt ein Array der eigenen (nicht geerbten) Eigenschaftsschlssel des Zielobjekts zurck.

Reflect.preventExtensions()

hnlich wie Object.preventExtensions(). Gibt einen booleschen Wert zurck, der true ist, wenn das Update erfolgreich war.

Reflect.set()

Eine Funktion, die Werte Eigenschaften zuweist. Gibt einen booleschen Wert zurck, der true ist, wenn das Update erfolgreich war.

Reflect.setPrototypeOf()

Eine Funktion, die den Prototyp eines Objekts festlegt. Gibt einen booleschen Wert zurck, der true ist, wenn das Update erfolgreich war.

Beispiele

Erkennen, ob ein Objekt bestimmte Eigenschaften enthlt

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

Reflect.has(duck, "color");
// true
Reflect.has(duck, "haircut");
// false

Rckgabe der eigenen Schlssel des Objekts

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

Hinzufgen einer neuen Eigenschaft zum Objekt

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

Spezifikationen

Spezifikation
ECMAScript 2027 LanguageSpecification
# sec-reflect-object

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page