Maison  >  Article  >  interface Web  >  Comment puis-je conserver une référence à « ceci » dans les fonctions prototypes JavaScript ?

Comment puis-je conserver une référence à « ceci » dans les fonctions prototypes JavaScript ?

DDD
DDDoriginal
2024-11-04 07:44:01974parcourir

How Can I Maintain a Reference to

Comment conserver une référence à « ceci » dans les fonctions de prototype JavaScript

Lorsque vous travaillez avec des prototypes JavaScript, il peut être difficile de préserver un référence au mot-clé "this", qui représente le contexte actuel de la fonction. Cela peut être problématique lorsque vous souhaitez accéder aux propriétés ou aux méthodes de l'objet principal à partir d'une fonction prototype.

Une solution courante consiste à enregistrer une référence à "this" au début de la fonction prototype en utilisant var myThis = this;, comme suggéré dans la question. Cependant, cette approche peut devenir lourde si vous disposez de plusieurs fonctions prototypes.

Une solution plus efficace consiste à utiliser la méthode .bind(), qui crée une nouvelle fonction qui préserve le contexte de la fonction d'origine. En liant la fonction d'origine au contexte souhaité (c'est-à-dire l'objet principal), vous vous assurez que "this" fait référence au bon objet à l'intérieur de la fonction liée.

Voici un exemple utilisant .bind() dans le contexte du code fourni dans la question :

<code class="javascript">MyClass.prototype.myfunc = function() {
  this.element.click((function() {
    // Within this click handler, "this" refers to the MyClass instance
  }).bind(this));
};</code>

Dans cet exemple, la méthode .bind() est utilisée pour lier le gestionnaire de clics au contexte de la fonction myfunc. Par conséquent, lorsque le gestionnaire de clics est invoqué, "this" fera correctement référence à l'instance MyClass.

La méthode .bind() offre également de la flexibilité. Vous pouvez spécifier des arguments supplémentaires à transmettre à la fonction liée en les incluant après l'argument de contexte. Cela peut être utile pour transmettre des paramètres ou initialiser des propriétés dans la fonction liée.

En tirant parti de la méthode .bind(), vous pouvez efficacement conserver une référence à « ceci » dans les fonctions prototypes JavaScript, garantissant ainsi que votre code conserve le contexte correct et facilite l'accès aux propriétés et méthodes de l'objet principal.

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