Heim >Web-Frontend >js-Tutorial >Wie kann ich den Kontext in Event-Handler-Rückrufen in JavaScript beibehalten?

Wie kann ich den Kontext in Event-Handler-Rückrufen in JavaScript beibehalten?

Linda Hamilton
Linda HamiltonOriginal
2024-11-06 04:22:02719Durchsuche

How Can I Preserve Context in Event Handler Callbacks in JavaScript?

Kontext in Event-Handler-Rückrufen bewahren: Die „self = this“-Technik

In JavaScript können Instanzmethoden als Event-Handler-Rückrufe einen Gültigkeitsbereich verursachen Änderungen. Wie der bereitgestellte Code zeigt, erfordern Ereignisbindungen eine Variable, um den Aufrufkontext beizubehalten, was zur Zuweisung „var self = this“ führt.

Dieser Ansatz ist zwar funktionsfähig, wirft jedoch Bedenken hinsichtlich seiner Wirksamkeit auf. Eine allgemeinere Lösung befasst sich mit dem Kernproblem: der Kanalisierung von Variablen in eingebetteten Funktionen.

In JavaScript ermöglichen Abschlüsse den Zugriff auf externe Variablen. Pseudovariablen wie „this“ und „arguments“ erfordern jedoch eine sorgfältige Handhabung. Durch die Zuweisung zu Aliasen innerhalb der übergeordneten Funktion wird ihre Verfügbarkeit in eingebetteten Funktionen sichergestellt.

Beispiel

Um „this“ in eingebetteten Funktionen zu verwenden, weisen Sie es einer Variablen zu und verwenden Sie es stattdessen der Alias:

var that = this;

function xyz() {
  // "this" is different here! --- but we don't care!
  console.log(that); // now it is the right object!
  
  function qwe() {
    // "this" is different here too! --- but we don't care!
    console.log(that); // it is the right object here too!
  }
  ...
};

Dieser Ansatz ist nicht auf „this“ beschränkt; „Argumente“ erfordern eine ähnliche Behandlung, um einen konsistenten Zugriff in eingebetteten Funktionen sicherzustellen.

Das obige ist der detaillierte Inhalt vonWie kann ich den Kontext in Event-Handler-Rückrufen in JavaScript beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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