Maison > interface Web > js tutoriel > Comment puis-je préserver le contexte dans les rappels du gestionnaire d'événements en JavaScript ?

Comment puis-je préserver le contexte dans les rappels du gestionnaire d'événements en JavaScript ?

Linda Hamilton
Libérer: 2024-11-06 04:22:02
original
766 Les gens l'ont consulté

How Can I Preserve Context in Event Handler Callbacks in JavaScript?

Préservation du contexte dans les rappels du gestionnaire d'événements : la technique « self = this »

En JavaScript, les méthodes d'instance en tant que rappels du gestionnaire d'événements peuvent entraîner une portée changements. Comme le démontre le code fourni, les liaisons d'événements nécessitent une variable pour préserver le contexte d'appel, ce qui conduit à l'affectation "var self = this".

Bien que fonctionnelle, cette approche soulève des inquiétudes quant à son efficacité. Une solution plus généralisée résout le problème principal : canaliser les variables dans des fonctions intégrées.

En JavaScript, les fermetures permettent d'accéder aux variables externes. Cependant, les pseudo-variables telles que « this » et « arguments » nécessitent une manipulation prudente. Leur attribution à des alias au sein de la fonction parent garantit leur disponibilité dans les fonctions intégrées.

Exemple

Pour utiliser "this" dans les fonctions intégrées, affectez-le à une variable et utilisez l'alias à la place :

var that = this;

function xyz() {
  // "this" is different here! --- but we don't care!
  console.log(that); // now it is the right object!
  
  function qwe() {
    // "this" is different here too! --- but we don't care!
    console.log(that); // it is the right object here too!
  }
  ...
};
Copier après la connexion

Cette approche ne se limite pas à « ce » ; Les "arguments" nécessitent un traitement similaire pour garantir un accès cohérent dans les fonctions intégrées.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal