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

HTML-Tutorial: Sammlung häufig verwendeter HTML-Tags (5)

Verwandte Artikel: Anfänger lernen einige HTML-Ta...

MySQL-Backup-Tabellenvorgang basierend auf Java

Der Kern ist mysqldump und Runtime Der Vorgang is...

HTML-Code, der den Internet Explorer zum Einfrieren bringen kann

Wir müssen lediglich einen beliebigen Texteditor ö...

So überwachen Sie den Linux-Serverstatus

Wir, insbesondere Linux-Ingenieure, haben täglich...

Schritte zum Bereitstellen eines Spring Boot-Projekts mit Docker

Inhaltsverzeichnis Erstellen Sie ein einfaches Sp...

So übertragen Sie Dateien zwischen Docker-Container und lokalem Computer

Zum Übertragen von Dateien zwischen dem Host und ...

Lösung für den Fehler „MySQL-Server ist verschwunden“

MySQL-Server hat Problem in PHP behoben 1. Hinter...

So fügen Sie Batchdaten unter Node.js in eine MySQL-Datenbank ein

Im Projekt (nodejs) müssen mehrere Daten gleichze...

Standardmäßige Stilanordnung von HTML4.0-Elementen

Code kopieren Der Code lautet wie folgt: html, Ad...

jQuery implementiert gleitende Registerkarte

In diesem Artikelbeispiel wird der spezifische Co...