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!