„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 01.11.2024
Durchsuche:175

Why Does the \

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

In einem JavaScript-Code-Snippet ist ein unerwartetes Verhalten in Bezug auf „this“ aufgetreten " 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 Zeiger „this“. 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 eine stattdessen ein Array von Argumenten.

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 normalerweise 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.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729291638 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3