Inhaltsverzeichnis- 1. Einleitung
- 2. Schnittstelle
- 3. Einfaches Beispiel
- 4. Fazit
1. Einleitung Laut der offiziellen MDN-Website: Reflect ist ein integriertes Objekt, das Methoden zum Abfangen JavaScript -Operationen bereitstellt. Diese Methoden sind dieselben wie für Proxy-Handler (en-US). Reflect ist kein Funktionsobjekt und daher nicht konstruierbar. Also, was ist es genau? Gemäß der obigen Dateieinführung ist es Proxy sehr ähnlich, beide erhalten die Informationen der Ausführungsfunktion selbst. Der Hauptunterschied besteht darin, dass alle Eigenschaften von Funktionsobjekten zu kompliziert sind und das Hinzufügen zusätzlicher Eigenschaften zu einem unangemessenen Programmverhalten führen kann. Daher wird Reflect -Funktion erweitert, um speziell das Aufrufen von Methoden, das Erstellen von Objekten, das Abrufen oder Festlegen von Eigenschaften und andere verwandte Vorgänge von Funktionsobjekten zu handhaben. 2. Schnittstelle Alle Methoden in Reflect sind statische Methoden und erfordern keinen Konstruktor oder keine Instanziierung. -
Reflect.apply ( target , thisArgument , argumentsList ) ruft eine Funktion auf und kann ein Array als aufrufenden Parameter übergeben. Ähnlich wie Function.prototype.apply() . -
Reflect.construct ( target , argumentsList[, newTarget\] ) führt eine neue Operation am Konstruktor aus, die der Ausführung von new target (...args) entspricht. -
Reflect.defineProperty ( target , propertyKey , attributes ) ist ähnlich zu Object.defineProperty() . Wenn die Einstellung erfolgreich ist, wird true zurückgegeben. -
Reflect.deleteProperty(target, propertyKey) als delete einer Funktion entspricht der Ausführung delete target[name] . -
Reflect.get(target, propertyKey[, receiver\]) ruft den Wert einer Eigenschaft eines Objekts ab, ähnlich wie target[name] . -
Reflect.getOwnPropertyDescriptor(target, propertyKey) ist ähnlich zu Object.getOwnPropertyDescriptor() . Wenn die Eigenschaft im Objekt vorhanden ist, wird der entsprechende Eigenschaftsdeskriptor zurückgegeben, andernfalls wird undefined zurückgegeben. -
Reflect.getPrototypeOf(target) ist ähnlich zu Object.getPrototypeOf() . -
Reflect.has(target, propertyKey) bestimmt, ob ein Objekt eine bestimmte Eigenschaft hat, die genau dem in Operator entspricht. -
Reflect.isExtensible(target) ist ähnlich zu Object.isExtensible() . -
Reflect.ownKeys(target) gibt ein Array zurück, das alle eigenen Eigenschaften enthält (ausgenommen geerbte Eigenschaften). (Ähnlich wie Object.keys() , wird aber von enumerable nicht beeinflusst). -
Reflect.preventExtensions(target) ist ähnlich zu Object.preventExtensions() . Gibt einen Boolean zurück. -
Reflect.set(target, propertyKey, value[, receiver\]) Funktion, die einer Eigenschaft einen Wert zuweist. Gibt einen Boole zurück, der true ist, wenn die Aktualisierung erfolgreich war. -
Reflect.setPrototypeOf(target, prototype) setzt die Prototypfunktion des Objekts. Gibt einen Boolean zurück. Wenn die Aktualisierung erfolgreich ist, wird true zurückgegeben.
3. Einfaches Beispiel Jetzt gibt es beispielsweise eine Funktion:
Klasse Person {
Konstruktor(Vorname, Nachname) {
this.firstName = Vorname
this.lastName = Nachname
}
get getName() {
returniere diesen.Vorname + ' ' + diesen.Nachname
}
}
Bei normaler Verwendung ist nur die Instanziierung erforderlich:
const person = neue Person('Jaxson', 'Wang')
console.log(person.getName) // Jaxson Wang
Sie können die Methode Reflect.construct() verwenden, um ein Objekt zu erstellen:
const person = Reflect.construct(Person, ['Jaxson', 'Wang'])
console.log(Person) // Jaxson Wang
4. Fazit Reflect-Objekte werden aus drei Gründen häufig zusammen mit Proxy-Proxys verwendet: - Alle von
Reflect bereitgestellten statischen Methoden sind genau dieselben wie die zweite handle -Parametermethode Proxy . - Der von
Proxy get/set() benötigte Rückgabewert ist genau der Rückgabewert der get/set -Methode von Reflect , sodass sie auf natürliche Weise zusammen verwendet werden können, was bequemer und genauer ist als die direkte Objektzuweisung/Anforderung von Werten. -
receiver Empfängerparameter ist unersetzlich.
Dies ist das Ende dieses Artikels über JavaScript-Reflexionslernfähigkeiten. Weitere relevante JavaScript-Reflexionsinhalte finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:- Java implementiert die dynamische Konvertierung von Reflection-JSON in die Entity-Klasse - FastJSON
- Java-Reflexion, die Verwendung von Generika in Json
- Beispielanalyse für JavaScript-Reflexion und Eigenschaftszuweisung
- Wie ES6 das integrierte Verhalten von Proxys und Reflexionen in JS ändert
- Detailliertes Beispiel für JavaScript-Reflexion und Abhängigkeitsinjektion
- Anwendungsbeispiele für JavaScript-Objektreflexion
- Java-Reflexion zum Erzielen von Javabean-zu-JSON-Beispielcode
- Einführung in den AJAX JavaScript-Reflexionsmechanismus
- JS-Reflexionsproblem
|