Maison >interface Web >js tutoriel >Javascript `call()` & `apply()` vs `bind()` : quand devriez-vous utiliser lequel ?

Javascript `call()` & `apply()` vs `bind()` : quand devriez-vous utiliser lequel ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-02 00:07:16229parcourir

Javascript `call()` & `apply()` vs. `bind()`: When Should You Use Which?

Javascript : call() & apply() vs bind() revisité

Alors que call() et apply() nous permettent de changer le contexte d'une fonction et transmettre les arguments manuellement ou sous forme de tableau, la méthode bind() offre une approche unique.

Quand l'utiliser bind()

Bind est particulièrement utile lorsque vous devez créer une fonction avec un contexte prédéfini pour une exécution ultérieure. Contrairement à call() ou apply(), qui appellent la fonction immédiatement, bind renvoie une nouvelle fonction avec l'ensemble de contexte spécifié.

L'exemple suivant montre la différence :

var obj = {
  x: 81,
  getX: function() {
    return this.x;
  }
};

alert(obj.getX.bind(obj)()); // 81
alert(obj.getX.call(obj)); // 81
alert(obj.getX.apply(obj)); // 81

Dans ceci Par exemple, bind() crée une nouvelle fonction qui, une fois exécutée, aura toujours son contexte défini sur l'objet obj. Ceci est particulièrement utile dans les écouteurs d'événements, où le contexte de la fonction peut devenir ambigu.

Cas d'utilisation

  • Écouteurs d'événements : Définissez le contexte des gestionnaires d'événements pour conserver la référence d'objet correcte dans les rappels asynchrones.
  • Async Rappels : Préserver le contexte de la fonction d'origine dans les rappels asynchrones Node.js.
  • Currying : Créer une nouvelle fonction avec un ensemble fixe d'arguments tout en préservant l'original de la fonction contexte.

Exemple :

function MyObject(element) {
  this.elm = element;

  element.addEventListener('click', this.onClick.bind(this), false);
}

MyObject.prototype.onClick = function(e) {
  var t = this; // do something with [t]...
  // Without bind, the context of this function would be different.
};

Conclusion

Bind permet de créer des fonctions avec un contexte prédéfini , ce qui le rend particulièrement utile dans la gestion des événements, la programmation asynchrone et d'autres scénarios où le maintien du contexte est crucial. Alors que call() et apply() fournissent une invocation immédiate de fonction, bind renvoie une fonction pour une exécution ultérieure avec un contexte fixe.

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