Tipps zum reflektierenden Lernen von JavaScript

Tipps zum reflektierenden Lernen von JavaScript

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

<<:  Anweisungen zur Verwendung der MySQL-IndexOF-Funktion

>>:  Achten Sie bei der Webseitenerstellung auf die Verwendung von HTML-Tags

Artikel empfehlen

Docker View-Prozess, Speicher und Cup-Verbrauch

Docker-Ansichtsprozess, Speicher, Cup-Verbrauch S...

Der einfachste Weg, das MySQL-Root-Passwort zurückzusetzen

Meine MySQL-Version ist MySQL V5.7.9, bitte verwe...

Vue.js implementiert Erläuterungen zum Tab-Umschalten und Farbwechseln

Bei der Implementierung dieser Funktion konnte di...

Detaillierte Erklärung der Verwendung des Linux-Befehls „tee“

Der Befehl tee wird hauptsächlich verwendet, um d...

Drei Möglichkeiten zum Aktualisieren von Iframes

Code kopieren Der Code lautet wie folgt: <ifra...

Zusammenfassung einiger Tipps zum MySQL-Indexwissen

Inhaltsverzeichnis 1. Grundkenntnisse der Indizie...

Zusammenfassung der MySQL-Indexkenntnisse

Die Einrichtung eines MySQL-Index ist für den eff...

Vue implementiert eine kleine Countdown-Funktion

In vielen Projekten muss eine Countdown-Funktion ...

Installationsprozess von MySQL5.7.22 auf dem Mac

1. Verwenden Sie das Installationspaket, um MySQL...

Beschreiben Sie kurz die MySQL InnoDB-Speicher-Engine

Vorwort: Die Speicher-Engine ist der Kern der Dat...

Detaillierte Erklärung der Rolle des Schlüssels in React

Inhaltsverzeichnis Frage: Wird die Farbe des Bere...

Allgemeine Shell-Skriptbefehle und zugehöriges Wissen unter Linux

Inhaltsverzeichnis 1. Einige Punkte, die Sie beac...