Comprendre « ceci » dans les fonctions de rappel JavaScript
En JavaScript, la valeur de « ceci » dans une fonction est déterminée par la façon dont la fonction est invoqué. Lorsqu'une fonction est passée en argument à une autre fonction, la valeur de « this » dans la fonction de rappel peut être contrôlée à l'aide de diverses méthodes.
Comportement par défaut
Généralement , dans une fonction de rappel, 'this' est défini par défaut sur l'objet global ou non défini (en mode strict). En effet, la fonction de rappel n'est pas techniquement invoquée en tant que méthode d'un objet spécifique.
Définir 'this' avec .bind()
Cependant, le .bind () peut être utilisée pour lier une valeur spécifique à « this » lorsque la fonction de rappel est invoquée. La méthode .bind() crée une nouvelle fonction qui définira toujours « this » sur la valeur passée comme argument à .bind().
Exemple : utilisation de .bind()
Dans votre exemple :
randomFunction(this.sumData.bind(this))
La méthode .bind() est utilisée pour créer une nouvelle fonction qui lie « ceci » à l'objet obj. Ainsi, lorsque la fonction de rappel (this.sumData) est invoquée par randomFunction, 'this' sera défini sur obj, ce à quoi vous vous attendiez.
Comparaison avec l'invocation de méthode directe
En revanche, l'utilisation de l'invocation directe de la méthode this.sumData() dans randomFunction définirait 'this' sur l'objet global ou non défini car la fonction serait appelée comme une fonction régulière et non comme une méthode de l'objet obj.
Fonctions fléchées dans ES6
Dans ES6, les fonctions fléchées ont un comportement différent concernant « ceci ». Ils conservent la valeur lexicale de « ceci » à partir de l'environnement dans lequel ils sont définis. Cela signifie que quelle que soit la façon dont la fonction flèche est appelée, « ceci » fera toujours référence au même objet. Cela peut être utile dans certains scénarios, mais il est important d'être conscient de ce comportement.
Conclusion
En fin de compte, la valeur de « ceci » dans une fonction de rappel est déterminé par la manière dont la fonction est invoquée. En comprenant les différentes manières de contrôler « ce », vous pouvez transmettre et manipuler efficacement des données dans les rappels JavaScript.
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!