Maison >interface Web >js tutoriel >Comment le pointeur \'this\' est-il résolu dans les fonctions JavaScript imbriquées ?

Comment le pointeur \'this\' est-il résolu dans les fonctions JavaScript imbriquées ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-19 06:43:30644parcourir

How Does the

Comportement du pointeur "this" dans les fonctions JavaScript imbriquées

Cette question concerne la compréhension du comportement du pointeur "this" lorsque vous travaillez avec des fonctions imbriquées en JavaScript. Lors de l'imbrication de fonctions, il est important de considérer comment le pointeur "this" est résolu dans chaque portée.

Dans l'exemple de code fourni, un pointeur "this" se trouve dans la fonction imbriquée "doSomeEffects()" lorsqu'elle est appelée. dans la fonction "displayMe()" de l'objet "std_obj". Cependant, étonnamment, le pointeur "this" fait référence à l'objet "window" et non au "std_obj" comme prévu.

Cela se produit parce que le pointeur "this" de JavaScript est lié dynamiquement au contexte appelant, ce qui n'est pas le cas. déterminé statiquement par la déclaration de la fonction. Au lieu de cela, la valeur « this » est déterminée au moment où la fonction est appelée.

Lorsque la fonction imbriquée est invoquée, le pointeur « this » n'est pas explicitement défini et le comportement par défaut de JavaScript prend le relais. Par défaut, le pointeur "this" fera référence à l'objet global "window" lorsqu'il est appelé sans contexte explicite.

Pour résoudre ce problème, nous devons définir explicitement le contexte de la fonction imbriquée. Ceci peut être réalisé en utilisant les méthodes "call()" ou "apply()". En appelant "doSomeEffects.call(this)", nous pouvons lier manuellement le pointeur "this" à l'objet "std_obj".

Une fois le pointeur "this" explicitement défini, les fonctions imbriquées peuvent accéder aux propriétés de correctement l'objet appelant. Dans ce cas, le pointeur "this" dans "doSomeEffects" fera référence à l'objet "std_obj", permettant à la fonction imbriquée de fonctionner comme prévu.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn