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); }
Méthode 2 : Utilisation de la méthode bind()
if (this.options.destroyOnHide) { setTimeout(function(){ this.tip.destroy() }.bind(this), 1000); }
3 : Utilisation des fonctions fléchées (ES6)
if (this.options.destroyOnHide) { setTimeout(() => { this.tip.destroy() }, 1000); }
Méthode 4 : Passer des arguments à setTimeout (HTML5)
if (this.options.destroyOnHide) { setTimeout(function(that){ that.tip.destroy() }, 1000, this); }
Lectures complémentaires :
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!