Maison  >  Article  >  interface Web  >  Ceci dans Js pointe vers le problème de apply().call(),bind()

Ceci dans Js pointe vers le problème de apply().call(),bind()

一个新手
一个新手original
2017-10-23 10:02:371479parcourir

Raison de la prise de notes : La popularité de JavaScript est devenue imparable. Les dérivés AngularJs, Node.js et BootStrmp ont de plus en plus perdu leurs avantages dans le développement back-end pour les petites et moyennes entreprises. qui peut s'appuyer entièrement sur l'expérience. L'informatique change la vie. En tant que programmeur .Net depuis trois ans, je sens maintenant profondément qu'être conservateur est en fait une peur, éviter le progrès des temps demande de la passion et de la motivation !

Texte :

1. Que font apply().call() et bind() ?

Ces trois sont modifiés par ce que cela pointe dans la méthode

2. Qu'est-ce que c'est

Ceci fait référence à l'objet d'exécution de la méthode que vous appelez actuellement, comme la méthode setTimeout La sortie de this


1 setTimeout(function(){
2                 console.log(this)
3            },1000)

est :


Window {external: Object, chrome: Object, document: document, Alax: Object, a2: Object…}

car setTimeout est entièrement appelé lorsque Window.setTimeout Il appartient à une méthode de l'objet Window.

Définir un autre objet


var Alax={
         name:'Alax',
         age:27,
         fuc:function(){            
         return this.age;
         }
        }

Logiquement parlant, l'utilisation de console.log (Alax.fun) devrait afficher 27, mais la situation réelle n'est pas définie, lequel Pourquoi ? Parce que lorsqu'il est appelé en dehors de l'objet Alax, l'objet réel est Window, et Window ne contient pas l'attribut age, ce qui signifie que ce pointeur a changé et doit être respécifié. N'oubliez pas d'attendre que le concept soit terminé avant de comparer ce que vous pensez. 🎜>

3. La différence entre call, apple et bind

1. Comparaison des paramètres

Le format du paramètre d'appel est (thisvalue,arg1)

l'appliquer is (thisvalue,[arg1,ar2...])

Le format du paramètre de liaison est (thisvalue,arg1,ar2...)

Thisvalue fait référence au pointeur this à transmettre , Les paramètres suivants sont facultatifs et correspondent aux paramètres de la méthode un à un. S'ils sont transmis, ils peuvent être obtenus à l'aide d'arguments

2. Comparaison des résultats de retour

. Call et apple font référence au passage de tous les paramètres aux arguments et renvoient directement le résultat de l'appel

"bind signifie renvoyer une valeur entrante et renvoyer un nouveau

après l'exécution de la méthode. La fonction doit ajouter ( ) pour appeler

Résumé : La méthode d'appel ci-dessus peut être


console.log((Alax.fuc).call(Alax))
console.log((Alax.fuc).apply(Alax))
console.log((Alax.fuc).bind(Alax)())
Attacher un appel de paramètre


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