Cet objet est lié en fonction de l'environnement d'exécution de la fonction lorsque la fonction est en cours d'exécution. Cet article présente principalement une analyse détaillée de l'utilisation de cet objet dans js. Les amis qui en ont besoin peuvent l'apprendre et le partager. J'espère que cela pourra aider tout le monde.
En fait, l'essence de cette phrase est que celui qui appelle la fonction, cela indique à qui
Plus précisément, il y a généralement les situations suivantes :
Global fonction
Dans l'environnement global, cela pointe vers Window
//例子1 function A() { console.log(this) } A();//Window
L'exemple ci-dessus est très simple, la fonction A est dans l'environnement global Exécuté dans l'environnement, c'est-à-dire que l'objet global Window appelle la fonction. À ce stade, cela pointe vers Window
Méthode objet
Lorsqu'il est appelé en tant que méthode objet, cela pointe vers l'objet qui a appelé la méthode
//例子2 var b = { getThis:function(){ console.log(this) } } b.getThis()//b
Les exemples que nous avons donnés jusqu'à présent sont relativement simples et faciles à comprendre. Le suivant est intéressant :
//例子3 var c = { getFunc:function(){ return function(){ console.log(this) } } } var cFun = c.getFunc() cFun()//Window
//例子4 var c = { getFunc:function(){ var that = this //在这里保留住this return function(){ console.log(that) } } } var cFun = c.getFunc() cFun()//c
appeler et postuler
fun.call(thisArg, arg1, arg2, ...)
//例子5 var d = { getThis:function(){ console.log(this) } } var e = { name:'e'//(给e写个`name`属性只是因为觉得孤零零的太难看了~~) } d.getThis.call(e)//e
<. 🎜> Ok, alors pourquoi on dit normal avant ? Parce que thisArg ici peut être spécifié comme nul et indéfini. Veuillez consulter :
//例子6 var d = { getThis:function(){ console.log(this) } } d.getThis.call(null)//Window d.getThis.call(undefined)//Window
es6 La fonction flèche dans est désormais utilisée plus fréquemment, mais une chose à noter est :
L'objet this dans le corps de la fonction est l'objet où il est défini, pas l'objet où il est utilisé.
En fait, la raison fondamentale de cette situation est : la fonction flèche n'a pas cet objet, donc le ceci de la fonction flèche est le ceci du code externe
//例子7 var f = { getThis:()=>{ console.log(this) } } f.getThis()//Window
Considérant que cela n'est peut-être pas facile à comprendre, regardons quelques exemples supplémentaires :
//例子8 var g = { getThis:function(){ return function(){console.log(this)} } } var h = { getThis:function(){ return ()=> console.log(this) } } g.getThis()()//Window h.getThis()()//h
Généralement, cet objet pointe vers l'objet qui appelle la fonction, et dans l'environnement global lorsque la fonction est exécutée, cet objet pointe vers Window
Dans les fonctions d'appel et d'application, cela pointe vers l'objet spécifié Si la paire spécifiée est indéfinie ou nulle, alors cet objet pointe vers Window
Dans les fonctions fléchées. , cet objet est équivalent au bloc de code externe this
Recommandations associées :
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!