Maison  >  Article  >  interface Web  >  Différences dans l'utilisation de apply, call et bind dans les connaissances javascript_Basic

Différences dans l'utilisation de apply, call et bind dans les connaissances javascript_Basic

WBOY
WBOYoriginal
2016-05-16 15:06:351559parcourir

En JS, ces trois éléments sont utilisés pour changer le point de l'objet this de la fonction. Quelles sont les différences entre eux.

Avant de parler des différences, résumons les similitudes entre les trois :

1. Ils sont tous utilisés pour changer le point de l'objet this de la fonction.

2. Le premier paramètre est l'objet vers lequel cela pointe.

3. Vous pouvez utiliser les paramètres suivants pour transmettre des paramètres.

Alors, quelle est la différence entre eux ? Regardons d’abord un exemple.

        var xw = {
            name : "小王",
            gender : "男",
            age : 24,
            say : function() {
                alert(this.name + " , " + this.gender + " ,今年" + this.age);                
            }
        }
        var xh = {
            name : "小红",
            gender : "女",
            age : 18
        }
        xw.say();

Il n'y a pas grand-chose à dire en soi. Celui montré doit être Xiao Wang, un homme de 24 ans cette année.
Alors, comment utiliser la méthode say de xw pour afficher les données de xh.
Pour appeler, vous pouvez faire ceci :

1.xw.say.call(xh);

Pour postuler, vous pouvez faire ceci :

1.xw.say.apply(xh);

Et pour lier, ça doit être comme ça :

1.xw.say.bind(xh)();

Si vous écrivez xw.say.bind(xh) directement, il n'y aura aucun résultat. Voyez-vous la différence ? Call et apply sont tous deux des appels directs à des fonctions, et la méthode bind renvoie toujours une fonction, vous devez donc () pour l'appeler plus tard.
Alors, quelle est la différence entre appeler et postuler ? Réécrivons un peu l'exemple.

        var xw = {
            name : "小王",
            gender : "男",
            age : 24,
            say : function(school,grade) {
                alert(this.name + " , " + this.gender + " ,今年" + this.age + " ,在" + school + "上" + grade);                
            }
        }
        var xh = {
            name : "小红",
            gender : "女",
            age : 18
        }

Vous pouvez voir que la méthode say a deux paramètres supplémentaires. Nous transmettons les paramètres via les paramètres de call/apply.
C'est le cas pour l'appel

1.xw.say.call(xh,"École primaire expérimentale", "Sixième année"); 

Et pour postuler c'est comme ça

1.xw.say.apply(xh,["École primaire expérimentale","Sixième année"]);

Voyez-vous la différence ? Les paramètres après l'appel correspondent un à un avec la méthode say, tandis que le deuxième paramètre de apply est un tableau. Les éléments du tableau correspondent un à un avec la méthode say. C'est la plus grande différence entre les deux.

Alors, comment la liaison transmet-elle les paramètres ? Il peut transmettre des paramètres comme call.

1.xw.say.bind(xh,"École primaire expérimentale", "Sixième année")();

Mais comme bind renvoie toujours une fonction, nous pouvons également transmettre des paramètres lors de l'appel.

1.xw.say.bind(xh)("École primaire expérimentale","Sixième année");

Les différences dans l'utilisation de apply, call et bind dans le javascript ci-dessus sont tout le contenu partagé par l'éditeur. J'espère qu'il pourra vous donner une référence, et j'espère que vous soutiendrez Script Home.

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