J'essaie d'accéder aux variables de membre d'une classe de prototypes dans JavaScript dans un gestionnaire d'événements - quelque chose que j'utilise généralement le mot-clé "ou" Copie de cette "[copie] dans le cas de manutentionnaires d'événement). Inutile de dire que je rencontre des ennuis.
prendre, par exemple, cet extrait HTML: p> et ce code JavaScript: p> var that = this;
4 Réponses :
Votre "que = Cet idiome" code> est toujours applicable:
Vous devriez essayer
Vous avez besoin de:
this.link.onclick = this.EventMethod.bind(this);
Comment onclick code> a-t-il accès à l'interface d'événement?
@Karl par "Accès à l'interface d'événement" Voulez-vous dire "recevoir l'objet d'événement comme une dispute"? La méthode lid code> renvoie une fonction b> (avec un
corrigé code>), donc
onclick = this.eventmethod code> est fondamentalement le identique à
onclick = this.eventmethod.bind (this) code>. Dans les deux cas, vous stockez une fonction dans la propriété
onclick code>; Ils sont identiques en termes de gestion de leurs arguments. Si votre question est plus générale sur la manière dont les arguments sont transmis aux fonctions d'auditeur, c'est une question assez différente de celle qui est posée ici et que vous devriez poser une nouvelle question.
Comme indiqué ci-dessus, en utilisant la liaison qui fait partie de la bibliothèque de prototypes est un moyen propre de résoudre ce problème. Cette question est un duplicata d'une autre question à laquelle il est répondu ici avec la mise en œuvre de la méthode de liaison sans inclure toute la bibliothèque de prototypes: p>
Cette question utilise jQuery. Je préférerais beaucoup voir une pure question javascript / réponse soit la norme.
Vous parlez-vous à la bibliothèque de prototypes ou à des classes prototypiques JavaScript plutôt droites?
Répondre trois ans de retard :) Mais pour la postérité: je parlais de classes prototypiques JavaScript droites.
Dupliqué possible de Comment accéder au bon
Ceci code> / Contexte à l'intérieur d'un rappel?
?@Bergi: Pour le compte rendu, j'ai posé cette question en 2009. La question que vous avez liée a été posée en 2013.
@Michael: Ouais, mais ça n'a pas d'importance. Les hauts sont fermés par la qualité des réponses, pas par date; Celui que j'ai lié est la question canonique sur la perte de
ce code>. Je n'étais pas sûr que ce soit un duplicata "exact", c'est pourquoi je ne l'ai pas simplement fermé mais que je n'ai que commenté. Le lien est définitivement utile pour tous ceux qui visitent cette question.