Maison >interface Web >js tutoriel >Explication détaillée des exemples d'utilisation de cet objet en js
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()//WindowCet exemple est similaire au précédent : un exemple est différent. Lors de l'exécution de c.getFunc(), une fonction anonyme est d'abord renvoyée à cFun, puis appelons cFun() dans l'environnement global. , donc cela pointe toujours vers Window pour le moment. Et si nous devons renvoyer un objet c ici ? Nous avons dit au début que l'objet this est déterminé lorsque la fonction est exécutée. Dans l'exemple 3, lorsque c.getFunc() est exécuté, l'objet this pointe toujours vers c, nous n'avons donc qu'à conserver this pour ce qui précède. Le code est légèrement modifié :
//例子4 var c = { getFunc:function(){ var that = this //在这里保留住this return function(){ console.log(that) } } } var cFun = c.getFunc() cFun()//cC'est pourquoi on peut souvent voir var self = this ou var that = this dans certains codes.
appeler et postuler
fun.call(thisArg, arg1, arg2, ...)Comment utiliser cette méthode, regardez l'exemple suivant :
//例子5 var d = { getThis:function(){ console.log(this) } } var e = { name:'e'//(给e写个`name`属性只是因为觉得孤零零的太难看了~~) } d.getThis.call(e)//eIci, nous pouvons voir la signification de la fonction d'appel Maintenant : Spécifiez un objet o1 pour appeler la méthode d'un autre objet o2 A ce moment, cet objet pointe vers o1
<.> 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)//WindowFonction flèche
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()()//hRésumé
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!