Maison >interface Web >js tutoriel >Javascript `call()` & `apply()` vs `bind()` : quand devriez-vous utiliser lequel ?
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
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!