Maison  >  Article  >  interface Web  >  Explication détaillée de l'utilisation de call(), apply() et bind() dans js

Explication détaillée de l'utilisation de call(), apply() et bind() dans js

php是最好的语言
php是最好的语言original
2018-08-10 17:50:082860parcourir

Je comprends enfin l'utilisation de call(), apply() et bind() en javascript

C'est en fait une chose très simple. Après dix minutes de lecture attentive, je suis passé du statut d'être. confus pour bien comprendre.

Comprenez d'abord ce qui suit :

Exemple 1

Explication détaillée de lutilisation de call(), apply() et bind() dans js

obj.objAge; //17

obj.myFun () //L'âge de Xiao Zhang n'est pas défini

Exemple 2
Explication détaillée de lutilisation de call(), apply() et bind() dans js

shows() //Moine aveugle

Comparez la différence entre les deux ceci, Ceci dans la première impression pointe vers obj, et dans la deuxième fonction shows() déclarée globalement, c'est window

1, call(), apply() et bind() sont tous utilisés pour redéfinir cela ; Cet objet !

Par exemple :

Explication détaillée de lutilisation de call(), apply() et bind() dans js

obj.myFun.call(db); // L'âge de Dema est 99

obj.myFun.apply ( db); //L'âge de Dema est 99

obj.myFun.bind(db)(); //L'âge de Dema est 99

Il y a un extra () après la méthode de liaison. , les résultats renvoyés sont cohérents !
On peut en conclure que bind renvoie une nouvelle fonction et que vous devez l'appeler pour être exécutée

2. Comparez les cas d'appel, de liaison et d'application de paramètres

Explication détaillée de lutilisation de call(), apply() et bind() dans js 

obj.myFun.call(db,'Chengdu','Shanghai'); //Dema a 99 ans de Chengdu à Shanghai

obj.myFun.apply(db ,[ 'Chengdu','Shanghai']); //L'âge de Dema est de 99 ans. De Chengdu à Shanghai

obj.myFun.bind(db,'Chengdu','Shanghai')(); a 99 ans. De Chengdu à Shanghai

obj.myFun.bind(db,['Chengdu','Shanghai'])(); // L'âge de Dema est de 99 ans. De Chengdu à Shanghai à undefined

Différence subtile !
Il n'est pas difficile de voir à partir des quatre résultats ci-dessus
Les premiers paramètres des trois fonctions call, bind et apply sont tous pointés par ceci. La différence vient du deuxième paramètre :
Les paramètres de. call Il est saisi directement. Les deuxième, troisième et nième paramètres sont tous séparés par des virgules et placés directement à la fin. obj.myFun.call(db,'Chengdu', ...,'string'); Tous les paramètres de apply sont Il doit être placé dans un tableau et passé dans obj.myFun.apply(db,['Chengdu', …, 'string' ]); Sauf que bind renvoie une fonction, ses paramètres sont les pareil que l'appel.
 
 Bien sûr, les paramètres des trois ne se limitent pas au type de chaîne et peuvent être de différents types, y compris des fonctions, des objets, etc. !

Recommandations associées :


Introduction détaillée à l'utilisation des fonctions de liaison, d'appel et d'application en JavaScript

appel, appliquer, en Javascript Explication détaillée de la différence entre la source et la connexion de la méthode bind

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!

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