Maison  >  Article  >  interface Web  >  Pourquoi JavaScript bind() est-il essentiel pour contrôler « ce » dans les fonctions ?

Pourquoi JavaScript bind() est-il essentiel pour contrôler « ce » dans les fonctions ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-24 13:32:02769parcourir

Why is JavaScript bind() Essential for Controlling

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

En JavaScript, « ceci » fait référence à l'objet qui possède le code en cours d'exécution. Cependant, lorsque les fonctions sont transmises en tant que rappels ou gestionnaires d'événements, l'environnement appelant peut différer de celui prévu. Cela conduit au problème de "ceci" faisant référence à l'objet global au lieu de l'objet prévu.

Résoudre le problème avec Bind

La méthode bind() de JavaScript vous permet pour définir explicitement la valeur de "this" dans une fonction. En liant une fonction à un objet spécifique, vous vous assurez que lorsque la fonction est appelée, "this" fera référence à cet objet.

Exemple :

<code class="js">var myName = {
  name: "Tom",
  getName: function() {
    return this.name;
  }
};

var storeMyName2 = myName.getName.bind(myName);
console.log(storeMyName2()); // Output: "Tom" (correct)</code>

En liant getName() à myName, la référence à « this » est conservée et la fonction renvoie correctement « Tom ».

Solution alternative : exemple 3

Dans exemple 3, storeMyName3 reçoit immédiatement le résultat de l'appel de myName.getName(). Cela signifie que la valeur de storeMyName3 est une chaîne et non une fonction. Ainsi, il n'y a aucun problème avec la valeur de "this" car la valeur est déterminée au moment de l'exécution, pas lorsque la fonction est appelée.

Comparaison de Bind() et de l'exemple 3

Bind() et l'exemple 3 atteignent le même objectif, mais via des mécanismes différents. Bind() vous permet de définir le contexte d'une fonction sans l'invoquer immédiatement, tandis que l'exemple 3 définit le contexte en appelant la fonction et en stockant le résultat.

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