Question d'entretien : méthode d'appel en JavaScript
Titre :
function fn(a,b){ console.log(this); console.log(a); console.log(a+b); } fn.call(1); fn.call.call(fn); fn.call.call.call(fn,1,2); fn.call.call.call.call(fn,1,2,3);
Réponse :
fn.call(1); // 1,undefined,NaN
fn.call.call(fn); fn,undefined,NaN
fn.call.call.call(fn,1,2); // 1,2,NaN
fn.call.call.call.call(fn,1,2,3) ); // 1,2,5
Idées approfondies de résolution de problèmes :
fn.call(1); le premier paramètre de call modifie le mot-clé this dans la fonction avant l'appel afin qu'il soit généré. 1; after Il n'y a pas de paramètres, donc a et b ne sont pas définis, et le résultat de l'addition est NaN
fn.call.call(fn); fn.call trouve la méthode d'appel sur Function.prototype (c'est aussi une fonction et une instance de la classe de fonction
, et vous pouvez également continuer à appeler call/apply et d'autres méthodes. Nous pouvons considérer fn.call comme). une fonction A puis connect Ce qui suit est égal à A.call(fn), où
exécute la méthode d'appel, change le mot-clé this dans A en fonction fn, puis exécute la fonction A (fn.call) ; >fn.call.call.call(fn,1,2); Grâce à la méthode de chaîne de prototype précédente, nous pouvons considérer fn.call.call.call comme une exécution A(fn.call.call).call, qui est enfermée dans
Le paramètre fn a été exécuté en fonction, il devient donc une exécution A.call(1,2) ! 1 est utilisé comme premier paramètre pour modifier cela dans la fonction avant l'appel, et les paramètres suivants sont transmis comme paramètres réels aux paramètres formels de la fonction !
fn.call.call.call.call(fn,1,2,3); Même principe que ci-dessus !
Résumé général :
Si vous ne le comprenez pas bien, vous pouvez également vous rappeler de ce conseil général :
Lorsque vous rencontrez deux appels ou plus, le premier paramètre est exécuté. Chaque paramètre doit être un. function;
Le deuxième paramètre consiste à modifier cela dans le premier paramètre
Le troisième paramètre et les suivants sont transmis au premier paramètre en tant que paramètres réels.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explication détaillée de la méthode de remplacement de la chaîne JavaScript et de la FAQ Cet article explorera deux façons de remplacer les caractères de chaîne dans JavaScript: le code JavaScript interne et le HTML interne pour les pages Web. Remplacer la chaîne dans le code JavaScript Le moyen le plus direct consiste à utiliser la méthode Remplace (): str = str.replace ("trouver", "remplacer"); Cette méthode remplace uniquement la première correspondance. Pour remplacer toutes les correspondances, utilisez une expression régulière et ajoutez le drapeau global G: str = str.replace (/ fi

L'article discute de la création, de la publication et du maintien des bibliothèques JavaScript, en se concentrant sur la planification, le développement, les tests, la documentation et les stratégies de promotion.

L'article traite des stratégies pour optimiser les performances JavaScript dans les navigateurs, en nous concentrant sur la réduction du temps d'exécution et la minimisation de l'impact sur la vitesse de chargement de la page.

L'article traite du débogage efficace de JavaScript à l'aide d'outils de développeur de navigateur, de se concentrer sur la définition des points d'arrêt, de l'utilisation de la console et d'analyser les performances.

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Cet article décrit dix étapes simples pour augmenter considérablement les performances de votre script. Ces techniques sont simples et applicables à tous les niveaux de compétence. Restez à jour: utilisez un gestionnaire de packages comme NPM avec un bundler comme Vite pour vous assurer

Sequelize est un ORM Node.js basé sur les promesses. Il peut être utilisé avec PostgreSQL, MySQL, MARIADB, SQLITE et MSSQL. Dans ce tutoriel, nous implémenterons l'authentification pour les utilisateurs d'une application Web. Et nous utiliserons Passport, l'authentification populaire Middlew

Cet article vous guidera pour créer un carrousel d'image simple à l'aide de la bibliothèque JQuery. Nous utiliserons la bibliothèque BXSLider, qui est construite sur jQuery et offre de nombreuses options de configuration pour configurer le carrousel. De nos jours, Picture Carrousel est devenue une fonctionnalité incontournable sur le site Web - une image vaut mieux que mille mots! Après avoir décidé d'utiliser le carrousel d'image, la question suivante est de savoir comment la créer. Tout d'abord, vous devez collecter des images de haute qualité et haute résolution. Ensuite, vous devez créer un carrousel d'image en utilisant HTML et un code JavaScript. Il existe de nombreuses bibliothèques sur le Web qui peuvent vous aider à créer des carrousels de différentes manières. Nous utiliserons la bibliothèque BXSLider open source. La bibliothèque Bxslider prend en charge la conception réactive, de sorte que le carrousel construit avec cette bibliothèque peut être adapté à n'importe quel
