Maison > interface Web > js tutoriel > le corps du texte

Pourquoi la méthode Bind() est-elle essentielle en JavaScript ?

Mary-Kate Olsen
Libérer: 2024-10-24 12:14:02
original
807 Les gens l'ont consulté

Why is Bind() Method Essential in JavaScript?

Pourquoi JavaScript bind() est-il nécessaire ?

Problème et solution

En JavaScript, le mot-clé this fait référence à l'objet sur lequel une fonction est invoquée. Cependant, lorsqu'une fonction est affectée à une variable puis appelée indirectement, cette valeur peut être imprévisible. Cela peut entraîner des erreurs telles que « ceci n'est pas défini » ou « ceci est l'objet global ».

Pour résoudre ce problème, JavaScript fournit la méthode bind(). En appelant bind(object), vous pouvez définir explicitement la valeur this pour la fonction, même lorsqu'elle est appelée ultérieurement. Cela empêche la valeur this de changer de manière inattendue.

Pourquoi le problème se produit

Comme expliqué précédemment, la valeur this est déterminée par le contexte d'invocation. Lorsqu'une fonction est appelée directement, cette valeur est simplement l'objet sur lequel elle est invoquée. Cependant, lorsqu'une fonction est affectée à une variable, elle perd son contexte d'invocation d'origine.

Exemple 1

<code class="js">this.name = "John";

var myName = {
  name: "Tom",
  getName: function() {
    return this.name
  }
}

var storeMyName = myName.getName;</code>
Copier après la connexion

Dans l'exemple 1, storeMyName est une référence à la fonction getName. Lorsque storeMyName est appelé, il perd son contexte d'origine dans l'objet myName. Par conséquent, cet intérieur storeMyName fait référence à l'objet global, pas à l'objet myName.

Solution (bind)

<code class="js">var storeMyName2 = myName.getName.bind(myName);</code>
Copier après la connexion

Dans l'exemple 2, bind() est utilisé pour définir explicitement la valeur this pour getName sur l'objet myName. Cela garantit que lorsque storeMyName2 est appelé, cela fera référence à l'objet myName, et non à l'objet global.

Pourquoi l'exemple 3 résout le problème

<code class="js">var storeMyName3 = myName.getName();</code>
Copier après la connexion

Exemple 3 est différent des autres car il n'attribue pas de fonction à une variable. Au lieu de cela, il appelle directement myName.getName() et stocke le résultat dans storeMyName3. Cela signifie que storeMyName3 n'est pas une fonction, mais plutôt la valeur renvoyée par la fonction getName. Par conséquent, il n'a pas à s'inquiéter de cette valeur.

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
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!