Cet objet a toujours été un piège en js. Il est difficile de juger sur quoi il pointe, et nous commettons souvent ce type d'erreur en raison de notre expérience avec self depuis C ou python. Parlons ensuite de la propriété de cet objet en détail.
règle1 : ceci
de l'environnement globalL'environnement de JavaScript est intrinsèquement déterminé par les fonctions. Dans JS, le contexte ne peut pas être séparé par des blocs de code. L'environnement qui n'est pas enveloppé par les fonctions est l'environnement global. Celui-ci pointe vers la fenêtre de variable globale. l'exemple suivant
rule2 : this
lorsqu'elle est appelée en tant que méthodeÉvidemment, cette situation est facile à juger. Elle est cohérente avec self en python. Cela pointe sans aucun doute l'objet qui appelle la méthode
.règle3 : ceci
lorsqu'il est utilisé comme constructeurInutile de dire qu'à ce stade, cela pointe évidemment vers l'objet nouvellement créé. L'exécution du constructeur ne crée pas réellement l'objet, mais l'initialise seulement. L'objet a été créé avant l'exécution
.
Voici quelques exemples
règle4 : ceci en appel indirect
L'appel dit indirect fait référence à l'utilisation des fonctions apply et call to call. À ce stade, cela pointe vers le premier paramètre de leur liste de paramètres.
règle5 : ceci dans d'autres situations
N'oubliez pas que cela ne sera pas modifié dans les autres cas, c'est aussi là que les erreurs sont les plus susceptibles de se produire.
Le code ci-dessus semble étrange. Cela ne devrait-il pas pointer vers une personne ?
Nous devons nous rappeler que this dans la fonction imbriquée ne pointera pas vers la fonction dans laquelle elle est imbriquée. Dans cet exemple, this dans sayhello ne pointera pas vers la fonction correspondant à hello. Si on change légèrement l'exemple pour devenir
Tout le monde aurait dû comprendre qu'à l'heure actuelle, sayhello n'est pas appelé en tant que méthode, donc cela pointe vers l'objet global. . .
À ce stade, le problème survient. Lors de l'exécution de l'exemple initial à l'aide de node, il affichera un message indéfini indiquant bonjour tout le monde. Je me demande si quelqu'un peut l'expliquer.
règle6 : l'évaluation enfreint toutes les règles
Terminez enfin par un exemple
Tu comprends ?