Maison > Article > interface Web > Pourquoi \'this\' ne fait-il pas référence à la fonction d'appel dans les rappels JavaScript ?
Quand ceci argumente : comprendre « ceci » dans les fonctions de rappel
En JavaScript, la valeur de this dans un appel de fonction est déterminée par le contexte dans lequel la fonction est exécutée. Cependant, en passant ceci comme argument, les règles peuvent devenir compliquées.
Plus précisément, le scénario suivant se produit : lorsqu'une fonction de rappel est passée en argument, pourquoi n'est-elle pas définie sur la fonction qui appelle le rappel ?
Comprendre la hiérarchie de « ce »
Pour comprendre pourquoi ceci est défini là où il se trouve, nous devons considérer la hiérarchie des appels de fonction :
Cependant, avant que randomFunction n'appelle le rappel, il utilise this.sumData.bind(this) pour créer une nouvelle fonction (règle n°5). Cette nouvelle fonction appelle la fonction de rappel d'origine, mais maintenant avec celle-ci liée à obj (l'argument passé à bind).
Implications pour les fonctions de rappel
Lors du passage d'une méthode en guise de rappel, il est crucial de comprendre qu'il ne sera pas appelé obj.method(). Cela signifie que this n'aura pas la valeur correcte dans la fonction de rappel. Pour contourner ce problème, vous pouvez utiliser bind() pour définir la valeur de this dans le rappel.
Autres notes utiles
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!