Maison > interface Web > js tutoriel > Comment conserver « ce » contexte dans les rappels setTimeout ?

Comment conserver « ce » contexte dans les rappels setTimeout ?

DDD
Libérer: 2024-12-26 16:15:09
original
838 Les gens l'ont consulté

How to Preserve

Passer le bon contexte "this" pour setTimeout Callback

Question :

Comment peut-on nous exécutons une méthode de classe dans une fonction de rappel setTimeout, en préservant le contexte (c'est-à-dire "ceci") du class?

Explication contextuelle :

Lors de l'utilisation de setTimeout, la variable "this" fait référence à l'objet global (fenêtre), ce qui n'est pas le comportement souhaité lorsque vous essayez de accéder aux propriétés de classe ou méthodes.

Réponse :

Méthode 1 : Stockage d'une référence locale

var that = this;
if (this.options.destroyOnHide) {
     setTimeout(function(){ that.tip.destroy() }, 1000);
}
Copier après la connexion

Méthode 2 : Utilisation de la méthode bind()

if (this.options.destroyOnHide) {
     setTimeout(function(){ this.tip.destroy() }.bind(this), 1000);
}
Copier après la connexion

3 : Utilisation des fonctions fléchées (ES6)

if (this.options.destroyOnHide) {
     setTimeout(() => { this.tip.destroy() }, 1000);
}
Copier après la connexion

Méthode 4 : Passer des arguments à setTimeout (HTML5)

if (this.options.destroyOnHide) {
     setTimeout(function(that){ that.tip.destroy() }, 1000, this);
}
Copier après la connexion

Lectures complémentaires :

  • [setTimeout - Le 'ce' problème](https://qntm.org/blog/2009/05/the-this-problem)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal