Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie können ES6-Klassen verwendet werden, um Funktionen zu erweitern und auf Instanzdaten zuzugreifen?

Linda Hamilton
Freigeben: 2024-10-21 06:09:30
Original
216 Leute haben es durchsucht

How can ES6 Classes be Used to Extend Functions and Access Instance Data?

Funktion mit ES6-Klassen erweitern

In ES6 können spezielle Objekte erweitert werden, was eine Vererbung vom Funktionsobjekt ermöglicht. Obwohl es möglich ist, solche Objekte als Funktionen aufzurufen, kann die Implementierung der Logik für diesen Aufruf eine Herausforderung sein.

Übergabe von Instanzdaten an Funktionsaufruf

Beim Aufrufen einer Klasse als Funktion , dies bezieht sich auf das Fensterobjekt. Für den Zugriff auf Instanzdaten stehen zwei Ansätze zur Verfügung:

  1. Hardcodierung: Erzwingen Sie, dass der Superaufruf eine Codezeichenfolge erwartet, die die Instanzdaten enthält.
class Smth extends Function {
  constructor(x) {
    super("return " + JSON.stringify(x) + ";");
  }
}
Nach dem Login kopieren
  1. Einen Abschluss verwenden: Eine Abschlussfunktion zurückgeben, die auf Instanzvariablen zugreift.
class Smth extends Function {
  constructor(x) {
    function smth() { return x; };
    Object.setPrototypeOf(smth, Smth.prototype);
    return smth;
  }
}
Nach dem Login kopieren

Abstraktion der Funktionserweiterung

Ein allgemeinerer Ansatz besteht darin, eine ExtensibleFunction-Klasse zu erstellen, die die Erweiterung verarbeitet:

class ExtensibleFunction extends Function {
  constructor(f) {
    return Object.setPrototypeOf(f, new.target.prototype);
  }
}
Nach dem Login kopieren

Diese Klasse kann dann verwendet werden, um bestimmte Klassen zu erweitern:

class Smth extends ExtensibleFunction {
  constructor(x) {
    super(() => { return x; }); // closure
  }
}
Nach dem Login kopieren

Zusammenfassend: Durch die Erweiterung der Funktion mit ES6-Klassen kann das Verhalten der Funktion geerbt und gleichzeitig die Aufruflogik angepasst werden. Um beim Aufruf der erweiterten Funktion Zugriff auf Instanzdaten zu ermöglichen, können verschiedene Ansätze verwendet werden.

Das obige ist der detaillierte Inhalt vonWie können ES6-Klassen verwendet werden, um Funktionen zu erweitern und auf Instanzdaten zuzugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage