Heim > Web-Frontend > js-Tutorial > Detaillierte Erläuterung der Verwendungsbeispiele dieses Objekts in js

Detaillierte Erläuterung der Verwendungsbeispiele dieses Objekts in js

小云云
Freigeben: 2018-01-08 09:06:30
Original
1476 Leute haben es durchsucht

Dieses Objekt ist basierend auf der Ausführungsumgebung der Funktion gebunden, wenn die Funktion ausgeführt wird. Dieser Artikel stellt hauptsächlich eine detaillierte Analyse der Verwendung dieses Objekts in js vor. Freunde, die es brauchen, können es lernen und teilen.

Tatsächlich besteht die Essenz dieses Satzes darin, dass wer auch immer die Funktion aufruft, dies auf wen zeigt

Im Einzelnen gibt es normalerweise die folgenden Situationen:

Global Funktion

In der globalen Umgebung zeigt dies auf Fenster


//例子1
 function A() {
 console.log(this)
 }
 A();//Window
Nach dem Login kopieren

Das obige Beispiel ist sehr einfach, Funktion A ist in der globalen Umgebung Wird in der Umgebung ausgeführt, dh das globale Objekt Window ruft die Funktion auf. Zu diesem Zeitpunkt zeigt dies auf Window

Objektmethode

Beim Aufruf als Objektmethode zeigt dies auf das Objekt, das die Methode aufgerufen hat


//例子2
var b = {
 getThis:function(){
  console.log(this)
 }
}
b.getThis()//b
Nach dem Login kopieren

Die Beispiele, die wir bisher gegeben haben, sind relativ einfach und leicht zu verstehen. Als nächstes kommt ein interessantes:


//例子3
 var c = {
 getFunc:function(){
  return function(){
  console.log(this)
  }
 }
 }
 var cFun = c.getFunc()
 cFun()//Window
Nach dem Login kopieren

Dieses Beispiel ähnelt dem vorherigen: Beim Ausführen von c.getFunc() wird zunächst eine anonyme Funktion zurückgegeben und dann cFun() in der globalen Umgebung aufgerufen , sodass dies zu diesem Zeitpunkt immer noch auf Window verweist.

Was ist, wenn wir hier ein C-Objekt zurückgeben müssen? Wir sagten zu Beginn, dass dieses Objekt bestimmt wird, wenn die Funktion ausgeführt wird. Wenn c.getFunc() ausgeführt wird, zeigt dieses Objekt immer noch auf c, sodass wir dieses nur für das oben Gesagte beibehalten müssen Der Code wurde leicht geändert:


//例子4
 var c = {
 getFunc:function(){
  var that = this //在这里保留住this
  return function(){
  console.log(that)
  }
 }
 }
 var cFun = c.getFunc()
 cFun()//c
Nach dem Login kopieren

Aus diesem Grund können wir in einigen Codes oft var self = this oder var that = this sehen.

Aufrufen und anwenden

Zu diesem Zeitpunkt zeigt das Objekt „this“ normalerweise auf den in der Funktion angegebenen Wert (beachten Sie, dass es hier normalerweise zwei Wörter gibt). , was in der Prüfung geprüft wird)

Anrufen und bewerben sind Klischees, aber ich werde ihnen eine kurze Einführung geben, für den Fall, dass neue Studenten sie vielleicht noch nicht kennengelernt haben (eigentlich nur, um ein paar Wörter zu erfinden) . Nehmen Sie als Beispiel den Aufruf: Die Syntax lautet wie folgt:


fun.call(thisArg, arg1, arg2, ...)
Nach dem Login kopieren

Wie Sie diese Methode verwenden, sehen Sie sich das folgende Beispiel an:


//例子5
var d = {
 getThis:function(){
  console.log(this)
 }
}
var e = {
 name:'e'//(给e写个`name`属性只是因为觉得孤零零的太难看了~~)
}
d.getThis.call(e)//e
Nach dem Login kopieren

Hier können wir die Bedeutung der Aufruffunktion sehen. Geben Sie nun ein Objekt o1 an, um die Methode eines anderen Objekts o2 aufzurufen. Zu diesem Zeitpunkt zeigt dieses Objekt auf o1

Okay, warum haben wir dann vorher „normal“ gesagt? Denn thisArg kann hier als null und undefiniert angegeben werden. Bitte beachten Sie:


//例子6
var d = {
 getThis:function(){
  console.log(this)
 }
}
 d.getThis.call(null)//Window
 d.getThis.call(undefined)//Window
Nach dem Login kopieren

Zu diesem Zeitpunkt zeigt dies auf das globale Objektfenster

Pfeilfunktion

es6 Die Pfeilfunktion in wird jetzt häufiger verwendet, aber eines ist zu beachten:

Das Objekt „this“ im Funktionskörper ist das Objekt, in dem es definiert ist, nicht das Objekt, in dem es verwendet wird.

Tatsächlich ist der grundlegende Grund für diese Situation: Die Pfeilfunktion hat dieses Objekt nicht, daher ist das Dies der Pfeilfunktion das Dies des äußeren Codes


//例子7
 var f = {
  getThis:()=>{
   console.log(this)
  }
 }
 f.getThis()//Window
Nach dem Login kopieren

Dieses Beispiel ist im Grunde dasselbe wie das vorherige Beispiel 2, außer dass die gewöhnliche Funktion in eine Pfeilfunktion umgeschrieben wird, aber zu diesem Zeitpunkt zeigt dieses Objekt bereits auf das äußere Fenster.

Da dies möglicherweise nicht leicht zu verstehen ist, schauen wir uns noch ein paar Beispiele an:


//例子8
 var g = {
 getThis:function(){
  return function(){console.log(this)}
 }
 }
 var h = {
 getThis:function(){
  return ()=> console.log(this)
 }
 }
 g.getThis()()//Window
 h.getThis()()//h
Nach dem Login kopieren

In diesem Beispiel steht g's getThis Genau wie im vorherigen Beispiel 3, da die Funktion zu diesem Zeitpunkt in der globalen Umgebung ausgeführt wird, verwendet getThis die Pfeilfunktion, sodass this auf den äußeren Codeblock zeigt zu diesem Zeitpunkt.

Zusammenfassung

Im Allgemeinen zeigt dieses Objekt auf das Objekt, das die Funktion aufruft, und in der globalen Umgebung, wenn die Funktion ausgeführt wird, zeigt dieses Objekt auf Fenster

In Aufruf- und Anwendungsfunktionen zeigt dies auf das angegebene Objekt. Wenn das angegebene Paar undefiniert oder null ist, zeigt dieses Objekt auf Fenster

In Pfeilfunktionen , dieses Objekt entspricht dem äußeren Codeblock this

Verwandte Empfehlungen:

Detaillierte Beispiele für den Unterschied zwischen this und event in js

Analyse der dadurch verursachten Fehler in JS

Umfassende Analyse davon in JavaScript

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendungsbeispiele dieses Objekts in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage