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
DDDOriginal
2024-12-26 16:15:09769Durchsuche

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);
}

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 :

  • [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!

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