Méthode d'appel de fonction
Avant de parler des trois frères s'appliquent, appellent et se lient en JavaScript, je voudrais parler de quelles sont les méthodes d'appel des fonctions:
• En fonction
• comme méthode
• En tant que constructeur
• appeler indirectement via leur appel () et appliquer () méthodes
Nous connaissons tous les trois méthodes d'appel précédentes et ne figurons pas dans le cadre de cet article, donc nous ne en parlerons pas.
Parlons de la méthode du quatrième appel
Appels indirects via appel () et appliquez ()
En fait, nous pouvons considérer ces deux fonctions comme des méthodes d'un certain objet, et appeler indirectement la fonction en appelant la méthode:
fonction f () {} f.call (o); f.apply (o);Le premier paramètre d'appel () et applique () est l'objet parent pour appeler la fonction. C'est le contexte d'appel, et une référence est obtenue à travers cela dans le corps de la fonction.
Sont donc les mêmes, ou y a-t-il des différences, et aussi la méthode de liaison? Ne vous inquiétez pas, analysons les différences et les connexions entre les trois ci-dessous en détail.
appel()
La méthode Call () spécifie un indicateur spécifique de ce pointeur (idiot, ne me dérange pas pour son exactitude) et des paramètres de la méthode qui l'appelle. Par exemple, il existe une fonction comme celle-ci:
var fn = fonction (arg1, arg2) {console.log (this, arg1, arg2); }Je vais l'appeler:
fn.call (null, 'skylor', 'min'); //1fn.Call(undfined, 'skylor', 'min'); // 2Var fx = function () {} fn.call (fx, 'skylor', 'min'); // 3Quelles sont les valeurs de retour de ces trois méthodes d'appel? Pas de bêtises, veuillez voir:
1.
Est-ce vraiment le cas? Vous êtes intelligent, allez dans la console du navigateur et essayez-le. J'irai, tu es un tricheur, ce n'est pas comme ça:
Chrome1. Fenêtre "Skylor" "min" 2. Fenêtre "Skylor" "min" 3. FX "Skylor" "min"
Ok, tu es intelligent. Mais cela illustre déjà très bien la méthode d'appel. (La fenêtre est très avancée, Microsoft glousse ...)
Nous avons remarqué que la méthode d'appel, le premier paramètre consiste à spécifier ce pointeur, et chaque paramètre après cela spécifie les paramètres requis. Notez que j'utilise "chacun", ce qui signifie que vous avez besoin de plusieurs paramètres et que vous souhaitez appeler la fonction, et y écrire chaque paramètre un par un.
appliquer()
appliquer () est le frère de l'appel (). Les autres endroits se ressemblent, ils sont tous des hommes, mais ils sont différents en un seul endroit. Jetons un coup d'œil à l'exemple d'abord:
fn.Apply (null, ['skylor', 'min']); //1fn.apply(fx, ['skylor', 'min']); // 2
Frère, avez-vous mal écrit? Il y a plus de supports. Non, non, non, c'est ce qui le rend différent de l'appel. Son deuxième paramètre est le tableau de paramètres requis.
lier()
Bind (), n'est-ce pas trois frères, je comprends cela, Blabla… non, non, c'est un frère assermenté qui est devenu des frères assermentés avec une application et un appel, pas un vrai frère.
Bien sûr, la méthode Bind vous permet également de spécifier ce pointeur, mais au lieu d'appeler une fonction, il renvoie une fonction (ou une copie) qui l'appelle, et spécifie un pointeur et un paramètre spécifiques à cette fonction. Convention, exemples illustrent tout:
var fnbound = fn.bind (null, 'skylor', 'min');
À l'heure actuelle, FNBound est une fonction, une autre fonction avec cela pointant vers Null et les paramètres sont ['Skylor', 'Min']. Appelé:
fnbound ();
résultat:
NULL, 'SKYLOR', 'MIN'
Ne vous inquiétez pas de la fenêtre avec moi. . . . .
La différence entre Bind et les deux autres frères est qu'elle n'appelle pas une fonction, mais renvoie une nouvelle fonction. De même, il spécifie également ce pointeur et ce paramètre. La méthode de spécification des paramètres est la même que l'appel, et il vient un par un.
Ayons un dernier exemple:
var shoppingcart = (function () {var _calculatePrice = function () {return this.price * this.amount;}; return {calculPrice: _calculateprice}}) (); var biens = {name: 'Hammer', prix: 199, montant: 2}; shoppingcart.calculateprice.Call (bien);Cela se termine. !
Ce qui précède est l'intégralité du contenu de l'application, de l'appel et de la liaison dans JavaScript qui vous est présenté par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!