Das
Dies ist ein Schlüsselwort in JavaScript. Der Wert davon ändert sich je nach Verwendung der Funktion. Aber es gibt immer ein Prinzip, das heißt, dies bezieht sich auf das Objekt, das die Funktion nennt.
1. Definition
1. Dies ist ein spezielles Objekt (oder diese Referenz) in der Funktion - es bezieht sich auf das Umgebungsobjekt, auf dem die Funktion ausgeführt wird.
2. Diese Referenz ist eine schreibgeschützte Variable, die jederzeit im JavaScript-Code verwendet werden kann. Diese Referenzreferenz (zeigt auf) ein Objekt, das das Merkmal hat, das sein Referenzobjekt automatisch entsprechend dem Codekontext ändert. Die Zitierregeln sind wie folgt:
• Im äußersten Code bezieht sich diese Referenz auf ein globales Objekt.
• Innerhalb einer Funktion variiert diese Referenz je nach Aufruf der Funktion. wie folgt
1) Der Konstruktoraufruf - diese Referenz bezieht sich auf das generierte Objekt
2) Methodenaufruf - Diese Referenz bezieht sich auf das Empfängerobjekt
3) Anwenden oder Anruf - Diese Referenz bezieht
4) Andere Anrufe - diese Referenz bezieht sich auf das globale Objekt
2. Basierend auf den oben genannten und relevanten Online -Informationen wird der Nutzungsstatus dieses Objekts (zitiert) wie folgt zusammengefasst:
JavaScript ist eine dynamische Sprache, und nur wenn dieses Schlüsselwort ausgeführt wird, kann es bestimmt werden. Dies weist also immer auf den Anrufer hin, dh einen Verweis auf das "Anrufobjekt". Einfach ausgedrückt, welches Objekt die genannte Methode gehört, weist dies auf dieses Objekt hin. Abhängig von der Funktionsmethode kann dies auf ein globales Objekt, das aktuelle Objekt oder ein anderes Objekt hinweisen.
1. Globale Funktionsaufrufe, dies wird in der globalen Funktion auf das globale Objektfenster verweisen. (Funktionsaufrufmodus)
// Codeliste 1 <Skript type = "text/javaScript"> var message = "this im Fenster"; // Dieser Satz wird außerhalb der Funktion und innerhalb der Funktionsfunktion func () {if (this == Fenster) {alert ("this == Fenster") geschrieben; alarm (Nachricht); this.methoda = function () {alert ("Ich bin eine Funktion");}}}} func (); // Wenn die Func -Methode nicht aufgerufen wird, werden die darin definierten Attribute oder Methoden nicht von methoda (); </script> abgerufenDas Ergebnis des Rufs von func () ist dieses == Fenster, dieses im Fenster
Das Ergebnis des Aufrufs von methoda () ist eine Funktion, die ich bin
2. Konstruktoraufruf, dh ein Objekt, das mit neuem Objekt instanziiert, weist auf das über den Konstruktor erzeugte Objekt hin. (Konstruktor -Anrufmodus)
Codeauflistung 2
<script type = "text/javaScript"> Funktion func () {if (this == Fenster) {alert ("this == fenster");} else {alert ("this! = Fenster");} this.fielda = "Ich bin ein Feld"; Alert (this); // Dies zeigt auf das Objekt obj </script>3. Aufrufen der Objektmethode, weist dies auf das aktuelle Objekt hin. Jede Funktion, solange die Funktion als Objektmethode verwendet oder zugewiesen wird, ist diese Innere der Funktion eine Referenz auf das Objekt selbst. Es kann auch verstanden werden, dass dies in einem normalen Objekt geschrieben ist und dies auf das Objekt selbst zeigt. (Methodenanrufmodus)
(Definition der Methode: Eine Funktion als Objekteigenschaft wird als Methode bezeichnet)
// Codeliste 3 <skript type = "text/javaScript"> var obj = {x: 3, doit: function () {if (this == Fenster) {alert ("this == Fenster");} else {alert ("methode heißt:" + this.x);}}}}}}; obj.doit (); // Dies zeigt auf das Objekt obj </script>V.
Die Anwendung oder Aufrufmethode kann verwendet werden, um eine Methode anstelle eines anderen Objekts aufzurufen. Die Aufrufmethode ändert den Objektkontext einer Funktion aus dem anfänglichen Kontext in ein von ThisOBJ angegebenes neues Objekt. Wenn dieser OBJ -Parameter nicht bereitgestellt wird, wird das globale Objekt als thisoBJ verwendet. (Rufmodus anwenden)
// Codeliste 4 <Skript type = "text/javaScript"> var obj = {x: 3, doit: function () {alert ("Methode heißt:" + this.x);}}; var obj2 = {x: 4}; obj.doit (); // 3 zeigt dies auf objobj.doit.apply (obj2); // 4 zeigt dies auf obj2obj.doit.call (obj2); // 4, dies zeigt auf OBJ2 </script>5. Dies in der Prototypkette - das Prototypobjekt und dies im Konstruktor auf das neu erstellte Instanzobjekt verweisen. Verwenden Sie die Prototypenerweiterungsmethode, um eine Instanz des Quellobjekts mit diesem Quellobjekt zu erhalten, und private Felder können nicht über die Prototypkette erhalten werden.
// Codeliste 5 <skript type = "text/javaScript"> Funktion func () {this.fielda = "Ich bin ein Feld"; var privatefielda = "Ich bin ein var";} func.prototype = {extendMethod: function (str) {alert (str + ":" + this.fielda); alert (privatfielda); // Es ist ein Fehler aufgetreten, das private Feld konnte nicht über die Prototypkette erhalten werden. }}; var obj = new func (); obj.extendMethod ("from Prototype"); // Zu diesem Zeitpunkt in der Konstruktor- und Prototypkette in diesem Zeigeobjekt OBJ </script>6. Dies im Verschluss - Verschluss: Die in der Funktion geschriebene Funktion zeigt auf das globale Objektfenster.
6.1 Schließungen in einem Objekt
// Codeliste 6 <Skript type = "text/javaScript"> var name = "Das Fenster"; var obj = {name: "my object", getNamefunc: function () {return function () {return this.name;}}}; alert (obj.getNamefunc () () ()); // das Fenster </script>Zu diesem Zeitpunkt weist dies in der Schließung auf das globale Objektfenster hin und kann nur die Eigenschaften des globalen Objekts erhalten. Was sollte ich also tun, wenn auf die Eigenschaften im Objekt (Variablen externer Funktionen) zugegriffen werden möchten? Speichern Sie einfach dieses Objekt der externen Funktion in einer Variablen, auf die durch einen Verschluss zugegriffen werden kann. Schauen Sie sich den folgenden Code an:
// Codeliste 7 <Skript type = "text/javaScript"> var name = "Das Fenster"; var obj = {name: "my object", getNamefunc: function () {var that that this; return function () {return that.name;}}}; alert (obj.getNamefunc () ()); // mein Objekt </script>Weisen Sie dies der externen Funktion der Variablen zu, Sie können die Variable der externen Funktion lesen.
6.2 Unabhängig davon, ob es sich direkt auf die Funktion bezieht oder eine Funktion instanziiert, gibt es in der Schließfunktion die Punkte in das Fenster zurück.
// Codeliste 8 <script type = "text/javaScript"> Funktion a () {alert (this == Fenster); var that = this; var func = function () {alert (this == Fenster); alert (das);}; return func;} var b = a (); b (); // true, true, [Objektfenster] var c = new a (); c (); // falsch, wahr, [Objektobjekt] </script>7. Die Funktion verwendet die Bind () -Methode, um ein Objekt zu binden, und dies zeigt auf den Wert, der an die Bind () -Funktion übergeben wurde.
// Codeliste 9 <Skript type = "text/javaScript"> Fenster.Color = "Red"; var obj = {color: "blau"}; Funktion SaysColor () {alert (this.color);} var objsaycolor = SayColor.bind (obj); objsaycolor (); // Blue </script>8. Das in das HTML -Element eingebettete Skriptsegment zeigt dies auf das Element selbst
// Codeliste 10 <div onclick = "test (this)" id = "div"> klicken Sie auf mich </div> <script type = "text/javaScript"> Funktionstest (obj) {alert (obj); // [Objekt htmldelement]} </script>9. In Skript -Tag schreiben: Dies bezieht sich auf das globale Objektfenster. Dies ist die gleiche wie die globale Variable, die von der globalen Funktion am ersten Punkt genannt wird.
Das obige ist ein Zitat davon in JavaScript, das Ihnen vom Herausgeber vorgestellt wurde. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!