Heim >Web-Frontend >js-Tutorial >Wie kann „dieser' Kontext in setTimeout-Rückrufen beibehalten werden?
Übergabe des richtigen „diesen“ Kontexts an setTimeout Callback
Frage:
Wie kann Wir führen eine Klassenmethode innerhalb einer setTimeout-Rückruffunktion aus und bewahren dabei den Kontext (d. h. „dies“) der Klasse?
Kontextuelle Erklärung:
Bei Verwendung von setTimeout bezieht sich die Variable „this“ auf das globale Objekt (Fenster), was beim Versuch nicht das gewünschte Verhalten ist Zugriff auf Klasseneigenschaften oder Methoden.
Antwort:
Methode 1: Speichern einer lokalen Referenz
var that = this; if (this.options.destroyOnHide) { setTimeout(function(){ that.tip.destroy() }, 1000); }
Methode 2: Verwenden von bind()
if (this.options.destroyOnHide) { setTimeout(function(){ this.tip.destroy() }.bind(this), 1000); }
Methode 3: Pfeilfunktionen verwenden (ES6)
if (this.options.destroyOnHide) { setTimeout(() => { this.tip.destroy() }, 1000); }
Methode 4: Argumente an setTimeout übergeben (HTML5)
if (this.options.destroyOnHide) { setTimeout(function(that){ that.tip.destroy() }, 1000, this); }
Weiterführende Literatur :
Das obige ist der detaillierte Inhalt vonWie kann „dieser' Kontext in setTimeout-Rückrufen beibehalten werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!