Heim  >  Artikel  >  Web-Frontend  >  Wie verwende ich das Schlüsselwort „dieses“ korrekt im setTimeout-Rückruf von Javascript?

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

Barbara Streisand
Barbara StreisandOriginal
2024-10-24 10:37:30393Durchsuche

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>

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>

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!

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