Aujourd'hui, je vais partager avec vous un point de connaissance important en JavaScript, celui-ci a une certaine valeur de référence et j'espère qu'il sera utile à l'apprentissage de chacun.
Nous sommes souvent confus lors de l'apprentissage du mot-clé this. Nous ne savons pas à quoi il fait référence dans la fonction et comment l'utiliser. Aujourd'hui, je vais vous présenter les détails à ce sujet dans l'article. .Connaissances
[Cours recommandés : Tutoriel JavaScript]
Contexte et this Mots-clés
En JavaScript, une fonction a son propre contexte d'exécution. Faites particulièrement attention ici au fait que le contexte d'exécution d'une fonction ne concerne pas la façon dont elle est déclarée, ni ce que fait la fonction, mais comment. pour l'appeler en code, nous l'utiliserons lors de l'appel de ce contexte d'exécution. Lorsqu'on y accède depuis une fonction, son contexte d'exécution est réellement accédé.
La méthode d'appel de la fonction est la même que celle-ci
Le contexte dépend de la méthode d'appel de la fonction On peut appeler la fonction du contexte en 4. de différentes manières, il existe donc également quatre types de ce Différents pointeurs
1. Un appel de fonction de base
2 Utiliser l'objet contextuel pour appeler la fonction, également appelé liaison implicite.
3. Utilisez call() ou appelez la fonction apply(), également appelée liaison explicite.
4. Liaison via la méthode bind()
Appel de fonction de base
L'appel de fonction de base est le moyen le plus simple d'appeler une fonction
Exemple :
<script type="text/javascript"> var name="张三"; function student(){ console.log(this.name); } student(); </script>
Dans cet exemple, on peut voir que student() appelle la fonction depuis la portée globale, donc ceci fait ici référence au global scope , donc le résultat de sortie est ""张三""
Liaison implicite
Quand une fonction est "contenue" par un objet, on dit que le this de la fonction est implicitement liée à cet objet
<script type="text/javascript"> var student={ name:"张三", obj:function(){ console.log(this.name) } } student.obj(); </script>
Bien que la fonction obj soit placée dans l'objet, elle ne sera pas utilisée car elle est définie à l'intérieur de l'objet différent. de l'extérieur, sous liaison implicite, obj peut toujours accéder à la propriété a dans l'objet étudiant via cette
Liaison explicite
peut utiliser call() ou apply() La méthode appelle une fonction, et son contexte d'exécution est explicitement lié à l'objet. call et apply peuvent changer cela pour pointer vers
Exemple : lorsque call () ou apply () n'est pas utilisé
<script type="text/javascript"> var name="张三"; var obj = { name:"李四", fun:function(){ console.log(this.name);}} obj.fun(); </script>
Utilisez call() pour faire valoir ce point dans la fenêtre
<script type="text/javascript"> var name="张三"; var obj = { name:"李四", fun:function(){ onsole.log(this.name);}} obj.fun.call(window); </script>
liaison bind()
bind() créera une fonction La valeur de cet objet dans le corps de la fonction sera liée à la valeur du premier paramètre passé dans bind(), mais bind(). ne sera pas exécuté. Fonction, renvoie uniquement une fonction qui peut être exécutée
<script type="text/javascript"> var a = { b : function(){ var func = function(){ console.log(this.c); } func.bind(this)(); }, c : 'Hello!' } a.b(); </script>
Pointez-la vers le contenu de l'objet c via la méthode bind.
Résumé : Ce qui précède est tout le contenu de cet article, nous pouvons voir que celui qui appelle ceci pointe vers qui globalement cela pointe vers la fenêtre ; les méthodes call(), apply() et bind() peuvent changer le pointeur de ceci.
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!