Maison  >  Article  >  interface Web  >  Qu'est-ce que cela indique dans une fonction JavaScript ?

Qu'est-ce que cela indique dans une fonction JavaScript ?

清浅
清浅original
2018-11-27 10:46:432443parcourir

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>

Image 1.jpg

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>

Image 2.jpg

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>

Image 3.jpg

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>

Image 1.jpg


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 : &#39;Hello!&#39;
}
a.b();
	</script>


Pointez-la vers le contenu de l'objet c via la méthode bind.

Image 4.jpg

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!

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