Accéder à cela depuis setInterval en JavaScript
Lorsque vous travaillez avec setInterval() en JavaScript, il peut devenir difficile d'accéder à l'instance correcte de l'objet à partir de la fonction de rappel. Ce problème survient lorsque la fonction de rappel est une méthode de l'objet et que le mot clé this ne fait pas référence à l'instance souhaitée en raison de la façon dont JavaScript gère la gestion des événements.
Pour surmonter cette limitation, explorons une solution qui utilise la méthode bind() pour lier la fonction de rappel à l'instance d'objet correcte.
Considérez l'exemple suivant :
prefs: null, startup : function() { // init prefs ... this.retrieve_rate(); this.intervalID = setInterval(this.retrieve_rate, this.INTERVAL); }, retrieve_rate : function() { var ajax = null; ajax = new XMLHttpRequest(); ajax.open('GET', 'http://xyz.example', true); ajax.onload = function() { // access prefs here } }
Dans cet exemple, le but est d'accéder à la propriété prefs de l'objet depuis le gestionnaire onload de la requête AJAX. Cependant, le comportement par défaut de JavaScript fait référence à l'objet window dans la fonction onload.
Pour résoudre ce problème, nous pouvons utiliser la méthode bind() pour lier la fonction retrieve_rate à l'instance d'objet actuelle. Cela garantit que lorsque la fonction onload est invoquée, le mot-clé this fera référence à l'objet correct.
this.intervalID = setInterval(this.retrieve_rate.bind(this), this.INTERVAL);
En modifiant le code de cette manière, nous garantissons que this fait référence à l'instance d'objet correcte lors du chargement. La fonction est appelée, nous permettant d'accéder à la propriété prefs comme nous le souhaitons.
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!