Heim  >  Artikel  >  Web-Frontend  >  Entdecken Sie das Geheimnis dahinter in Javascript

Entdecken Sie das Geheimnis dahinter in Javascript

黄舟
黄舟Original
2017-02-20 14:30:11860Durchsuche

Vorwort: Dies ist ein relativ spezielles Schlüsselwort in JavaScript. Sein breites Anwendungsspektrum und seine flexiblen Methoden machen es leistungsstark, aber gleichzeitig ist es dazu bestimmt, schwierig zu verwenden . Als ich anfing, es zu lernen, war ich sehr verwirrt. Ich habe viele Informationen nachgeschlagen, um es vollständig zu verstehen. Dann habe ich das Gelernte geordnet und auf leicht verständliche Weise ausgedrückt. Es kann als Lernnotiz und als Referenz für Kinder in Not verwendet werden^_^

Was ist das?

Die Bedeutung dieses Schlüsselworts ist klar und spezifisch, das heißt, es bezieht sich auf das aktuelle Objekt. Dies bedeutet, dass dies nur unter bestimmten relativen Umständen zutrifft.

Dies ist in drei Situationen unterteilt: globales Objekt, aktuelles Objekt oder ein beliebiges Objekt; die Beurteilung, in welcher Situation es sich befindet, hängt vollständig davon ab, wie die Funktion aufgerufen wird. Die Hauptfunktionsaufrufe in JavaScript haben die folgenden Methoden:

Wird als normale Funktion aufgerufen

Wird als Objektmethode aufgerufen

Wird als Konstruktor aufgerufen

Verwenden Sie „apply“ oder „call“, um

1. Aufruf als normale Funktion

------Diese Aufrufmethode ist ein globaler Aufruf und bezieht sich hier auf den globalen Aufruf Objekt

function test(){
 this.a = 5;
 alert(this.a);
 alert(this);
}
test(); // 5 [object Window]


Wie oben gezeigt: Für eine global definierte Funktion ist der Eigentümer der Funktion die aktuelle Seite, bei der es sich um das Fensterobjekt handelt , also example() Das aufrufende Objekt ist Window, also stellt dies hier Window dar

Eine andere Möglichkeit, es zu schreiben:


var a = 5;
function test(){
 var a = 10;
 alert(this.a);
}
test(); //5


Wie oben gezeigt: Eine Variable a wird ebenfalls innerhalb der Funktion test() deklariert, aber das Ergebnis des Aufrufs von test() ist 5, was bedeutet, dass diese innerhalb der Funktion das globale Objekt darstellt, also Window

Anders ausgedrückt:


var a = 5;
function test(){
 this.a = 10;
}
test();
alert(a); //10


Wie oben gezeigt: Die Funktion test() wird aufgerufen und der Wert der globalen Variablen a wird geändert. Dies zeigt an, dass dies zu diesem Zeitpunkt das globale Objekt darstellt.


2. Aufruf als Objektfunktion
------Wenn eine Funktion von einem Objekt aufgerufen wird, zeigt dies auf das Objekt


var name="张三";
 var person={
  name:"李四",
  showName:function(){
   alert(this.name);
  }
 }
 person.showName(); //输出 李四
 var other=person.showName;
 other(); //输出 张三


Wie oben gezeigt: Das Ergebnis der Ausführung von person.showName() ist Li Si, was darauf hinweist, dass dies in showName zu diesem Zeitpunkt auf Person verweist; >Nach der Zuweisung von person.showName zu other kann es als Attribut des Fensterobjekts betrachtet werden, da other eine globale Variable ist. Wenn also other() aufgerufen wird, entspricht dies dem Aufruf von window.other(), sodass dies auf das Fenster verweist und das Ausgabeergebnis Zhang San ist.

Wenn es also als Funktionsobjekt aufgerufen wird, ist dies zeigt auf das Objekt des Aufrufs.


3. Rufen Sie

als Konstruktor auf ------Der Konstruktor soll über diese Funktion ein neues Objekt generieren, das auf dieses neue Objekt



Wie oben gezeigt: Generieren Sie ein Objekttypobjekt über das neue Schlüsselwort und weisen Sie es dem Hund zu. Führen Sie dies aus. Wie für den Konstruktor ist dies in Der Bereich des Konstruktors zeigt auf dieses Objekt, in diesem Fall auf Hund, sodass this.name äquivalent zu dog.name ist, sodass das Ausgabeergebnis Doudou ist.
function animal(){
 this.name = "豆豆";
}
var dog = new animal();
alert(dog.name); // 输出 豆豆


4. Verwenden Sie apply oder call, um

aufzurufen. ------apply() ist eine Methode des Funktionsobjekts. Sie wendet eine Methode eines Objekts an und verwendet eine andere Objekt ersetzt das aktuelle Objekt.




Wie oben gezeigt: b.n()----Da das aufgerufene Objekt b ist, zeigt this auf b, this. a == b.a, das Ergebnis ist also Li Si;
var a = "张三";
function test(){
 alert(this.a);
}
var b = {};
b.a = "李四";
b.n = test;
b.n(); //李四
b.n.apply(); //张三
b.n.apply(b); //李四

b.n.apply----Wenn der Parameter von apply() leer ist, gibt es kein Objekt, das das aktuelle Objekt ersetzt, und das globale Objekt wird verwendet standardmäßig zeigt dies auf window , das Ergebnis ist Zhang San; Li Si

(Verweis auf diesen Artikel Ich habe Online-Informationen und einige Bücher gelesen. Wenn es Fehler gibt, können Sie diese gerne darauf hinweisen und diese werden rechtzeitig korrigiert. O(∩_∩)O )


Zusammenfassung:
In diesem Artikel wird JavaScript vorgestellt. Die Beispiele für die Bedeutung dieses Schlüsselworts in verschiedenen Situationen sind sehr einfach und können zum tieferen Verständnis beitragen. Obwohl dies nur ein kleines Konzept in JavaScript ist, können wir es nutzen, um die Ausführungsumgebung von Funktionen in JavaScript zu verstehen. Wenn wir die entsprechenden Kenntnisse vollständig beherrschen, können wir problemlos objektorientierte JavaScript-Programme schreiben. Abschließend möchte ich Ihnen fürs Zuschauen danken.



Das Obige ist der Inhalt der Erforschung dieses Geheimnisses in Javascript. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

-->


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