En js, le mot-clé this est une chose intéressante, mais sa direction déroute souvent les débutants.
En fait, pour comprendre ce mot-clé, deux questions doivent être clarifiées - "l'appel de méthode et le déclenchement de méthode"
Regardons maintenant un morceau de code
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>function</title> <script> function showThis(){ console.info(this); } function Test1(){ this.f=showThis; } function Test2(){ this.f=function(){ showThis(); } } showThis();//window new Test1().f();//Test1 new Test2().f();//window </script> </head> <body> </body> </html>
La ligne 20 imprime l'objet fenêtre, ce qui est facile à comprendre, mais la ligne 21 imprime l'objet instance de Test1, tandis que la ligne 22 imprime l'objet fenêtre. En regardant la construction de Test1 et Test2, nous avons constaté que la méthode f exécutait finalement la méthode showThis. Mais ce point de showThis est différent. En effet, la méthode f dans Test1 pointe directement vers showThis, new Test1().f() appelle directement la méthode showThis avec l'instance de Test1 et l'appelant est l'instance de Test1. Et new Test2().f() déclenche la méthode showThis de l'objet window dans la méthode d'instance f de Test2, où elle pointe vers la fenêtre de l'appelant plutôt que vers l'instance du déclencheur Test2.
Vous pouvez le trouver dès maintenant. cela pointe vers l'appelant et le déclencheur pousse simplement l'appelant à exécuter la méthode spécifiée.