Maison >interface Web >js tutoriel >Comment utiliser correctement le mot-clé « ce » dans le rappel setTimeout de Javascript ?
setTimeout et "this" en JavaScript
Lors de l'utilisation de la fonction setTimeout en JavaScript, il est crucial de comprendre comment le mot-clé this fonctionne dans le fonction de rappel. Dans certains cas, vous pouvez rencontrer une erreur indiquant que la méthode référencée n'est pas définie après un délai d'expiration.
Considérez le code suivant :
<code class="javascript">test.prototype.method = function() { // method2 returns image based on the id passed this.method2('useSomeElement').src = "http://www.some.url"; timeDelay = window.setTimeout(this.method, 5000); }; test.prototype.method2 = function(name) { for (var i = 0; i < document.images.length; i++) { if (document.images[i].id.indexOf(name) > 1) { return document.images[i]; } } };</code>
Dans cet exemple, la fonction de méthode est appelée avec un délai d'attente de 5 000 millisecondes. Cependant, après le délai d'attente, la fonction method2 n'est plus accessible dans la fonction de rappel. En effet, le mot-clé this fait référence à l'objet global au lieu de l'instance du prototype de test.
Pour résoudre ce problème, vous pouvez lier le mot-clé this à la fonction de rappel avant d'appeler setTimeout. Ceci peut être réalisé en utilisant la méthode .bind(this) :
<code class="javascript">test.prototype.method = function() { // method2 returns image based on the id passed this.method2('useSomeElement').src = "http://www.some.url"; timeDelay = window.setTimeout(this.method.bind(this), 5000); };</code>
En liant le mot-clé this à la fonction de rappel, vous vous assurez que la fonction method2 reste accessible même après l'expiration du délai d'attente.
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!