Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie verwende ich das Schlüsselwort „dieses' korrekt im setTimeout-Rückruf von Javascript?

Barbara Streisand
Freigeben: 2024-10-24 10:37:30
Original
392 Leute haben es durchsucht

How to Use

setTimeout und „this“ in JavaScript

Bei der Verwendung der setTimeout-Funktion in JavaScript ist es wichtig zu verstehen, wie das Schlüsselwort this innerhalb von funktioniert Rückruffunktion. In einigen Fällen kann es zu einer Fehlermeldung kommen, die besagt, dass die referenzierte Methode nach einer Zeitüberschreitungsverzögerung nicht definiert ist.

Bedenken Sie den folgenden Code:

<code class="javascript">test.prototype.method = function() {
    // method2 returns image based on the id passed
    this.method2('useSomeElement').src = "http://www.some.url";
    timeDelay = window.setTimeout(this.method, 5000);
};

test.prototype.method2 = function(name) {
    for (var i = 0; i < document.images.length; i++) {
        if (document.images[i].id.indexOf(name) > 1) {
            return document.images[i];
        }
    }
};</code>
Nach dem Login kopieren

In diesem Beispiel wird die Methodenfunktion aufgerufen mit einem Timeout von 5000 Millisekunden. Nach dem Timeout ist die Funktion method2 innerhalb der Callback-Funktion jedoch nicht mehr zugänglich. Dies liegt daran, dass sich das Schlüsselwort this auf das globale Objekt und nicht auf die Instanz des Testprototyps bezieht.

Um dieses Problem zu beheben, können Sie das Schlüsselwort this an die Rückruffunktion binden, bevor Sie setTimeout aufrufen. Dies kann durch die Verwendung der Methode .bind(this) erreicht werden:

<code class="javascript">test.prototype.method = function() {
    // method2 returns image based on the id passed
    this.method2('useSomeElement').src = "http://www.some.url";
    timeDelay = window.setTimeout(this.method.bind(this), 5000);
};</code>
Nach dem Login kopieren

Durch die Bindung des Schlüsselworts this an die Callback-Funktion stellen Sie sicher, dass die Funktion method2 auch nach Ablauf des Timeouts zugänglich bleibt.

Das obige ist der detaillierte Inhalt vonWie verwende ich das Schlüsselwort „dieses' korrekt im setTimeout-Rückruf von Javascript?. 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!