"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi le pointeur \"this\" pointe-t-il vers l'objet global dans les fonctions JavaScript imbriquées ?

Pourquoi le pointeur \"this\" pointe-t-il vers l'objet global dans les fonctions JavaScript imbriquées ?

Publié le 2024-11-01
Parcourir:268

Why Does the \

Mystère du pointeur JavaScript "this" dans les fonctions imbriquées

Dans un extrait de code JavaScript, vous avez rencontré un comportement inattendu concernant le "this" " pointeur dans une fonction imbriquée. Malgré la définition de la fonction imbriquée dans une méthode objet, le pointeur "this" à l'intérieur de la fonction imbriquée pointe vers l'objet "window" global.

Le comportement du pointeur "this" est déterminé par la méthode d'invocation de fonction dans JavaScript. Il existe trois méthodes principales :

  1. Invocation directe : someThing.someFunction(arg1, arg2, argN)

    • Dans cette méthode, le pointeur "this" fait référence à l'objet appelant la fonction, dans ce cas, someThing.
  2. Appel de fonction avec call() : someFunction.call(someThing, arg1, arg2, argN)

    • La fonction call() définit explicitement le pointeur "this" sur l'objet fourni, dans ce cas, someThing.
  3. Appel de fonction avec apply() : someFunction.apply(someThing, [arg1, arg2, argN])

    • Similaire à call(), la fonction apply() définit le pointeur "this" sur l'objet fourni, mais cela prend un tableau d'arguments à la place.

Dans l'exemple que vous avez fourni, la fonction imbriquée est invoquée sans aucune des méthodes d'invocation de fonction explicites. Par conséquent, le pointeur "this" est par défaut l'objet global, qui est généralement l'objet "window" dans un environnement de navigateur.

Pour spécifier explicitement le comportement du pointeur "this", vous pouvez utiliser les modifications suivantes :

  1. Utilisez std_obj.displayMe() au lieu de std_obj.displayMe ; pour appeler explicitement la méthode displayMe.
  2. Définissez explicitement la fonction imbriquée avec le pointeur this de l'objet : var doSomeEffects = function() { var that = this; ... }
  3. Utilisez les fonctions call() ou apply() pour définir le pointeur "this" : doSomeEffects.call(std_obj);

En utilisant l'une de ces méthodes , vous pouvez contrôler le comportement du pointeur "this" dans les fonctions imbriquées et vous assurer qu'il fait référence à l'objet souhaité.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729291638. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3