Heim  >  Artikel  >  Web-Frontend  >  Zusammenfassung der Javascript-Implementierung von Methodenaufrufen und Methodenauslösern_Grundkenntnisse

Zusammenfassung der Javascript-Implementierung von Methodenaufrufen und Methodenauslösern_Grundkenntnisse

WBOY
WBOYOriginal
2016-05-16 15:07:591251Durchsuche

In js ist das Schlüsselwort this eine interessante Sache, aber seine Richtung verwirrt Anfänger oft.

Um dieses Schlüsselwort zu verstehen, müssen tatsächlich zwei Probleme geklärt werden: „Methodenaufruf und Methodenauslösung“

Schauen wir uns nun einen Code an

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>function</title>
<script>
function showThis(){
  console.info(this);
}
  
function Test1(){
  this.f=showThis;
}
function Test2(){
  this.f=function(){
    showThis();
  }
}

showThis();//window
new Test1().f();//Test1  
new Test2().f();//window
</script>
</head>
<body>
</body>
</html> 

Zeile 20 gibt das Fensterobjekt aus, was leicht zu verstehen ist, aber Zeile 21 gibt das Instanzobjekt von Test1 aus, während Zeile 22 das Fensterobjekt ausgibt. Als wir uns die Konstruktion von Test1 und Test2 ansahen, stellten wir fest, dass Methode f schließlich die Methode showThis ausführte. Aber dieser Punkt in showThis ist anders. Dies liegt daran, dass die f-Methode in Test1 direkt auf showThis verweist, new Test1().f() direkt die showThis-Methode mit der Instanz von Test1 aufruft und der Aufrufer die Instanz von Test1 ist. Und new Test2().f() löst die showThis-Methode des Fensterobjekts in der Instanzmethode f von Test2 aus, wobei diese auf das Aufruferfenster und nicht auf die Instanz des Auslösers Test2 verweist.

Du kannst es jetzt finden. Dies zeigt auf den Aufrufer, und der Trigger drängt den Aufrufer einfach dazu, die angegebene Methode auszuführen.

Stellungnahme:
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