Heim  >  Artikel  >  Web-Frontend  >  Warum zeigt der „this“-Zeiger in verschachtelten JavaScript-Funktionen auf das globale Objekt?

Warum zeigt der „this“-Zeiger in verschachtelten JavaScript-Funktionen auf das globale Objekt?

Susan Sarandon
Susan SarandonOriginal
2024-10-19 06:48:30535Durchsuche

Why Does the

JavaScript „this“-Zeiger-Rätsel in verschachtelten Funktionen

In einem JavaScript-Codeausschnitt sind Sie auf ein unerwartetes Verhalten in Bezug auf „this“ gestoßen " Zeiger innerhalb einer verschachtelten Funktion. Obwohl die verschachtelte Funktion innerhalb einer Objektmethode definiert ist, zeigt der „this“-Zeiger innerhalb der verschachtelten Funktion auf das globale „window“-Objekt.

Das Verhalten des „this“-Zeigers wird durch die Funktionsaufrufmethode in bestimmt JavaScript. Es gibt drei Hauptmethoden:

  1. Direkter Aufruf: someThing.someFunction(arg1, arg2, argN)

    • In dieser Methode verweist der „this“-Zeiger an das Objekt, das die Funktion aufruft, in diesem Fall someThing.
  2. Funktionsaufruf mit call(): someFunction.call(someThing, arg1, arg2, argN)

    • Die Funktion call() setzt den Zeiger „this“ explizit auf das bereitgestellte Objekt, in diesem Fall someThing.
  3. Funktionsaufruf mit apply() : someFunction.apply(someThing, [arg1, arg2, argN])

    • Ähnlich wie call() setzt die Funktion apply() den Zeiger „this“ auf das bereitgestellte Objekt, benötigt jedoch einen Stattdessen wird ein Array von Argumenten verwendet.

In dem von Ihnen bereitgestellten Beispiel wird die verschachtelte Funktion ohne eine der expliziten Funktionsaufrufmethoden aufgerufen. Daher ist der „this“-Zeiger standardmäßig auf das globale Objekt eingestellt, bei dem es sich in der Regel um das „window“-Objekt in einer Browserumgebung handelt.

Um das Verhalten des „this“-Zeigers explizit anzugeben, können Sie die folgenden Modifikationen verwenden :

  1. Verwenden Sie std_obj.displayMe() anstelle von std_obj.displayMe; um die displayMe-Methode explizit aufzurufen.
  2. Definieren Sie die verschachtelte Funktion explizit mit dem this-Zeiger des Objekts: var doSomeEffects = function() { var that = this; ... }
  3. Verwenden Sie die Funktionen call() oder apply(), um den „this“-Zeiger zu setzen: doSomeEffects.call(std_obj);

Durch Verwendung einer dieser Methoden können Sie das Verhalten des „this“-Zeigers innerhalb verschachtelter Funktionen steuern und sicherstellen, dass er auf das gewünschte Objekt verweist.

Das obige ist der detaillierte Inhalt vonWarum zeigt der „this“-Zeiger in verschachtelten JavaScript-Funktionen auf das globale Objekt?. 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