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

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

php是最好的语言
Libérer: 2018-08-10 17:50:08
original
2854 Les gens l'ont consulté

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!

Étiquettes associées:
js
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