Maison > interface Web > js tutoriel > Explication détaillée de la façon d'utiliser la méthode de liaison de fonction en Javascript

Explication détaillée de la façon d'utiliser la méthode de liaison de fonction en Javascript

伊谢尔伦
Libérer: 2017-07-20 14:11:46
original
3255 Les gens l'ont consulté

Function.prototype.bind()

La méthode bind est utilisée pour spécifier le pointeur this à l'intérieur de la fonction (la portée dans laquelle elle est exécutée), puis renvoie une nouvelle fonction. La méthode bind n’exécute pas une fonction immédiatement.


var keith = {
 a: 1,
 count: function() {
 console.log(this.a++);
 }
 };
 keith.count(); //1
 keith.count(); //2
 keith.count(); //3
Copier après la connexion

Dans le code ci-dessus, si this.a pointe vers la propriété a à l'intérieur de l'objet Keith, si cette méthode est affectée à une autre variable, elle sera appelé quand il sera appelé. Quelque chose s'est mal passé.


 var keith = {
 a: 1,
 count: function() {
 console.log(this.a++);
 }
 };
 var f = keith.count;
 f(); //NaN
Copier après la connexion

Dans le code ci-dessus, si la méthode count est assignée à la variable f, alors l'objet this ne pointe plus vers l'objet Keith, mais vers la fenêtre objet. Et window.a est par défaut undefined Après l'opération d'incrémentation, undefined++ est égal à NaN.

Afin de résoudre ce problème, vous pouvez utiliser la méthode bind pour lier ceci dans l'objet Keith à l'objet Keith, ou l'appeler directement.


 var f = keith.count.bind(keith);
 f(); //1
 f(); //2
 f(); //3
 keith.count.bind(keith)() //1
 keith.count.bind(keith)() //2
 keith.count.bind(keith)() //3
Copier après la connexion

Bien entendu, cela peut également être lié à d'autres objets.


 var obj = {
 a: 100
 };
 var f = keith.count.bind(obj);
 f(); //100
 f(); //101
 f(); //102
Copier après la connexion

De même, nous pouvons également transmettre des paramètres à la méthode bind Si le premier paramètre est nul ou indéfini ou ceci, l'objet this à l'intérieur de la fonction pointera vers. l'environnement global ; le second est le paramètre requis lors de l'appel, et la forme de transmission des paramètres est la même que la méthode d'appel.


 function keith(a, b) {
 return a + b;
 }
 console.log(keith.apply(null,[1,4])); //5
 console.log(keith.call(null,1,4)); //5
 console.log(keith.bind(null, 1, 4)); //keith()
 console.log(keith.bind(null, 1, 4)()); //5
Copier après la connexion

Dans le code ci-dessus, vous pouvez voir la différence entre call, apply et bind : Les méthodes call et apply sont exécutées immédiatement après avoir été appelées. Après l'appel de liaison, il revient à la fonction d'origine, qui doit être rappelée , ce qui est un peu comme une fermeture

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!

É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