Heim > Web-Frontend > js-Tutorial > Hauptteil

So behalten Sie den Instanzbereich in JavaScript-Ereignishandlern bei: Erfassen Sie „dies' mit Variablen-Aliasing?

Barbara Streisand
Freigeben: 2024-11-07 21:25:03
Original
781 Leute haben es durchsucht

How to Preserve Instance Scope in JavaScript Event Handlers: Capturing

Variable Scoping in Event-Handlern: Das „diese“-Rätsel

In JavaScript können Instanzmethoden, die als Event-Handler-Rückrufe verwendet werden, zu Scoping-Problemen führen . Wenn der Ereignishandler ausgelöst wird, verschiebt sich der Geltungsbereich von „this“ von der beabsichtigten Instanz auf das Element, das den Rückruf aufgerufen hat. Dies erfordert die Verwendung einer Variablen, um den Umfang der Instanz zu „erfassen“ und aufrechtzuerhalten.

Die Technik, eine „self“-Variable als Alias ​​„this“ zu deklarieren und sie an den Ereignishandler zu übergeben, wie in gezeigt Das Code-Snippet ist eine gängige Lösung. Sein unkonventionelles Erscheinungsbild kann jedoch Bedenken hinsichtlich seiner Eignung hervorrufen.

Alternativen zum „Selbst“-Aliasing:

Das Kernproblem ist nicht jQuery-spezifisch, sondern betrifft die Schließung von JavaScript Verhalten. Während Abschlüsse eingebetteten Funktionen den Zugriff auf Variablen aus ihrem übergeordneten Bereich ermöglichen, verhält sich diese Pseudovariable anders. Wie der Code zeigt:

// Attempt to use "this" in embedded functions
function xyz() {
  console.log(this); // Incorrect
}
Nach dem Login kopieren

Dieses Verhalten erfordert einen geänderten Ansatz:

// Assign "this" to a variable (i.e., abc) and use the variable instead
var abc = this;

function xyz() {
  console.log(abc); // Correct
}
Nach dem Login kopieren

Durch Aliasing von „this“ mit abc bleibt der Zugriff des Abschlusses auf den Umfang der beabsichtigten Instanz erhalten. Diese Technik ist auf andere Pseudovariablen wie „Argumente“ anwendbar.

Daher ist die Aliasing-Methode „self“ zwar funktionsfähig, die Alternative, „this“ explizit einer Variablen zuzuweisen und darauf zu verweisen, bietet jedoch mehr Konventionelle und robuste Lösung für das Scoping-Problem in Event-Handler-Callback-Funktionen.

Das obige ist der detaillierte Inhalt vonSo behalten Sie den Instanzbereich in JavaScript-Ereignishandlern bei: Erfassen Sie „dies' mit Variablen-Aliasing?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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!