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

Référencer correctement l'application de la méthode bind dans les astuces JavaScript_javascript

WBOY
Libérer: 2016-05-16 15:59:55
original
1301 Les gens l'ont consulté

En JavaScript, les méthodes impliquent souvent le contexte, c'est-à-dire qu'elles ne peuvent souvent pas être citées directement. Prenez le console.log("info...") le plus courant comme exemple. Évitez d'écrire de longues consoles et utilisez directement log. ("info..."), vous penserez automatiquement à la syntaxe suivante :

 var log = console.log;
 log("info…");
Copier après la connexion

Désolé, l'erreur s'est produite lors de l'exécution : TypeError : Invocation illégale.

Pourquoi ? Pour console.log("info..."), la méthode log est appelée sur l'objet console, donc ceci dans la méthode log pointe vers l'objet console et nous utilisons la variable log pour pointer vers la méthode console.log ; puis appelez directement la méthode log. À ce moment-là, celle-ci pointe vers l'objet window. Si le contexte est incohérent, une erreur sera bien sûr signalée.

À ce stade, nous pouvons utiliser la méthode bind pour résoudre ce problème. La méthode bind vous permet de transmettre manuellement a this comme contexte de la méthode actuelle, puis de renvoyer la méthode contenant le contexte, par exemple :

 var log = console.log.bind(console);
 log("info...");

Copier après la connexion

De cette façon, il n'y aura pas d'erreurs.

Cependant, la méthode bind ne prend pas en charge les navigateurs IE 8 et inférieurs. Nous pouvons en implémenter une nous-mêmes, c'est très simple.

 Function.prototype.bind = Function.prototype.bind || function(context){
   var _this = this;
   
   return function(){
     _this.apply(context, arguments);
   };
 };

Copier après la connexion

Le noyau est mis en œuvre via la méthode apply, une application classique de fermeture. _this pointe vers la méthode actuelle et le contexte pointe vers le contexte de la méthode actuelle, les deux étant accessibles via des fermetures.

Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal