"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 l'opérateur \"this\" est-il incohérent en JavaScript et comment y remédier ?

Pourquoi l'opérateur \"this\" est-il incohérent en JavaScript et comment y remédier ?

Publié le 2024-11-08
Parcourir:419

Why is the \

En Javascript, pourquoi l'opérateur "this" est-il incohérent ?

En JavaScript, l'opérateur "this" présente un comportement varié en fonction du contexte d’invocation. Cela peut entraîner de la confusion et des résultats inattendus, en particulier lorsque vous travaillez avec des rappels et des objets.

Modèles d'appel et liaison "this"

L'opérateur "this" est lié à l'objet ou la classe lors de l'invocation de la fonction, et cette liaison est déterminée par le modèle d'invocation :

  • Méthode : Lorsqu'il est invoqué en tant que méthode d'un objet, "this" fait référence à objet lui-même.
  • Fonction : Lorsqu'il est appelé en tant que fonction autonome, "this" fait référence à la portée globale (objet fenêtre dans les navigateurs).
  • Constructeur : Lorsqu'il est invoqué avec le mot-clé "new", un nouvel objet est créé et "this" pointe vers cet objet.
  • Apply : La méthode "apply" permet de définir explicitement "this" et transmission d'arguments dans un tableau.

L'énigme du rappel

Le problème survient lorsque le rappel d'une méthode est invoqué en tant que fonction. Étant donné que les rappels ne sont pas invoqués en tant que méthodes, « this » fait référence à la portée globale au lieu de l'objet auquel il était initialement destiné.

Bonnes pratiques

Une stratégie à maintenir la cohérence dans la liaison "this" dans les rappels consiste à utiliser le "var that = this;" modèle. Cela attribue une référence à « ceci » (l'objet) à une nouvelle variable (cela), qui peut ensuite être utilisée dans le rappel.

Une autre approche recommandée consiste à adopter l'aspect de programmation fonctionnelle de JavaScript et à éviter de s'appuyer sur des classes. et les modèles d'héritage. En utilisant des fonctions pures et des fonctions d'ordre supérieur, vous pouvez séparer la logique des états d'objet et obtenir un code plus modulaire et plus prévisible.

En outre, envisagez d'utiliser un framework JavaScript qui fournit des mécanismes pour gérer « cette » liaison et l'objet- programmation orientée de manière cohérente. N'oubliez pas de lire attentivement la documentation et les bizarreries du framework pour éviter tout comportement inattendu.

Déclaration de sortie Cet article est reproduit sur: 1729561575 S'il y a une contrefaçon, 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