Heim > Web-Frontend > js-Tutorial > Hauptteil

So erweitern Sie Funktionen in ES6-Klassen: Navigieren in „diesem' und Abschlusstechniken

Barbara Streisand
Freigeben: 2024-10-21 06:02:30
Original
814 Leute haben es durchsucht

How to Extend Functions in ES6 Classes: Navigating 'this' and Closure Techniques

Funktionen mit ES6-Klassen erweitern: „Dies“ und Schließungstricks verstehen

Das Erweitern spezieller Objekte in ES6 ermöglicht die Vererbung von Funktionen und aktiviert diese als Funktionen aufgerufen werden. Die Implementierung der Logik für solche Aufrufe erfordert jedoch eine sorgfältige Berücksichtigung der „this“-Referenz.

Standardmäßig zeigt „this“ auf die Instanz selbst, wenn eine Methode für eine Klasseninstanz aufgerufen wird. Wenn eine Funktion jedoch direkt aufgerufen wird, bezieht sich „this“ auf das globale Objekt (z. B. Fenster). Um dieses Problem anzugehen, haben wir zwei Möglichkeiten:

1. Daten im Konstruktor fest codieren:

Der Aufruf „super“ kann den Funktionskonstruktor aufrufen und eine Codezeichenfolge erwarten. Um auf Instanzdaten zuzugreifen, können wir sie fest codieren:

class Smth extends Function {
  constructor(x) {
    super("return " + JSON.stringify(x) + ";");
  }
}
Nach dem Login kopieren

2. Verschluss und Verschluss-Wrapper:

Für eine flexiblere Lösung müssen wir einen Abschluss erstellen, der der zurückgegebenen Funktion Instanzdaten zuweist:

class Smth extends Function {
  constructor(x) {
    function smth() { return x; }
    Object.setPrototypeOf(smth, Smth.prototype);
    return smth;
  }
}
Nach dem Login kopieren

Um diese Funktionalität zu abstrahieren, haben wir kann eine „ExtensibleFunction“-Klasse einführen:

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

Unterklassen können dann von ExtensibleFunction erben:

class Smth extends ExtensibleFunction {
  constructor(x) {
    super(function() { return x; });
  }
}
Nach dem Login kopieren

Die Verwendung von Pfeilfunktionen oder benannten Funktionen kann ebenfalls alternative Ansätze bieten, obwohl sie sich darin unterscheiden können ihr Vererbungsverhalten.

Das obige ist der detaillierte Inhalt vonSo erweitern Sie Funktionen in ES6-Klassen: Navigieren in „diesem' und Abschlusstechniken. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!