Heim > Web-Frontend > js-Tutorial > Wie kann „dieser' Kontext in setTimeout-Rückrufen beibehalten werden?

Wie kann „dieser' Kontext in setTimeout-Rückrufen beibehalten werden?

DDD
Freigeben: 2024-12-26 16:15:09
Original
815 Leute haben es durchsucht

How to Preserve

Ü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);
}
Nach dem Login kopieren

Methode 2: Verwenden von bind()

if (this.options.destroyOnHide) {
     setTimeout(function(){ this.tip.destroy() }.bind(this), 1000);
}
Nach dem Login kopieren

Methode 3: Pfeilfunktionen verwenden (ES6)

if (this.options.destroyOnHide) {
     setTimeout(() => { this.tip.destroy() }, 1000);
}
Nach dem Login kopieren

Methode 4: Argumente an setTimeout übergeben (HTML5)

if (this.options.destroyOnHide) {
     setTimeout(function(that){ that.tip.destroy() }, 1000, this);
}
Nach dem Login kopieren

Weiterführende Literatur :

  • [setTimeout - Das 'dies' Problem](https://qntm.org/blog/2009/05/the-this-problem)

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!

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage