Heim >Web-Frontend >js-Tutorial >Eine ausführliche und einfache Analyse der Verwendung dieser Funktion in JavaScript_Javascript-Kenntnissen

Eine ausführliche und einfache Analyse der Verwendung dieser Funktion in JavaScript_Javascript-Kenntnissen

WBOY
WBOYOriginal
2016-05-16 16:00:031230Durchsuche

Die Beispiele in diesem Artikel beschreiben die Verwendung davon in JavaScript. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:

Als ich vorher JavaScript lernte, konnte ich das nicht herausfinden. Das ist nicht so einfach zu verstehen wie das in Java. Ich verstand es später, nachdem ich viele Artikel anderer gelesen hatte. Jetzt gehe ich über das, was andere geschrieben haben, damit ich es später nicht vergesse.

Generell gibt es hierfür drei Arten von Anweisungen. Zeigt auf das globale Fenster, das Objekt und den Konstruktor.

Fazit: In Javascript zeigt dies auf das aktuelle Objekt, wenn die Funktion ausgeführt wird. Einfach ausgedrückt: Zu welchem ​​Objekt die aufgerufene Methode gehört, zeigt auf dieses Objekt.

1. Globales Fenster

Einfacher Code

var message = "this in window";
var printMessage = function(){
  console.info(this === window);
  console.info(this.message);
};
printMessage();

Da die aufrufende Methode printMessage zum Fenster gehört, lautet das Ausgabeergebnis:

true this in window

Wenn Sie nun den Code so ändern, dass er komplizierter wird

var message = "this in window";
var printMessage = function(){
  console.info(this === window);
  console.info(this.message);
};
var obj = {
  message: 'this in obj',
  printMsg : function(){
 printMessage();
  }
};
obj.printMessage();

Zu diesem Zeitpunkt gehört die printMessage-Methode zum Fenster, sodass diese immer noch auf das Fenster verweist. Die obj.printMessage-Methode gehört zum obj-Objekt. Siehe die Analyse unten.

Das Ausgabeergebnis lautet also immer noch: true this in window

2. Das Objekt

Schauen Sie sich nun das Objekt an und ändern Sie den Code leicht

var message = "this in window";
var printMessage = function(){
  console.info(this === window);
  console.info(this.message);
};
var obj = {
  message: 'this in obj',
  printMessage : window.printMessage
};
obj.printMessage();

Ergebnis:

false this in obj

Ja, Sie haben immer noch die Schlussfolgerung des vorherigen Schritts. Die obj.printMessage-Methode gehört zum obj-Objekt, also zeigt dies auf obj.

Okay, keine Sorge mehr, schauen Sie sich den Code an:

var message = "this in window";
var printMessage = function(){
  console.info(this === window);
  console.info(this.message);
};
var obj = {
  message: 'this in obj',
  printMessage : function(){
 var obj2 = {
   message:'this in obj2',
   printMessage: window.printMessage
 };
 obj2.printMessage();
  }
};
obj.printMessage();

Der letzte Aufruf ist obj2.printMessage(). Wenn dies ausgeführt wird, ist dies also obj2

Ergebnis:

falsch, dies in obj2

Haha, ist es dasselbe, wie du denkst? Wer es nennt, zeigt auf wen.

3. Konstruktor

var Person = function(){
  this.age = 1;
  this.name = 'no name';
};
var p = new Person();
console.info('age = ' + p.age);
console.info('name = ' + p.name);

Ergebnis:

Alter = 1 Name = kein Name.

Was macht der Konstruktor also damit? Das zuvor erwähnte „Verstehen der JavaScript-Prototypkette in einfachen Worten“ beinhaltet eine Analyse neuer.

var Person = function(){};
var p = new Person();

Der neue Prozess gliedert sich in die folgenden drei Schritte:
(1) var p={}; das heißt, ein Objekt p
initialisieren (2) p.__proto__ = Person.prototype;
(3) Person.call(p); das heißt, p wird konstruiert, was auch als Initialisierung p

bezeichnet werden kann

Dann lass uns über den Anruf sprechen.

Aufrufmethode

Gilt für: Funktionsobjekt
Rufen Sie eine Methode für ein Objekt auf, um das aktuelle Objekt durch ein anderes Objekt zu ersetzen.

call([thisObj[,arg1[, arg2[, [,.argN]]]]])

Parameter:
thisObj
Optional. Das Objekt, das als aktuelles Objekt verwendet wird.
arg1, arg2, , argN
Optional. Es wird eine Folge von Methodenparametern übergeben.

Beschreibung:
Mit der Call-Methode kann eine Methode stellvertretend für ein anderes Objekt aufgerufen werden. Die Aufrufmethode ändert den Objektkontext einer Funktion vom Anfangskontext in das durch thisObj angegebene neue Objekt. Wenn der Parameter „thisObj“ nicht angegeben wird, wird das globale Objekt als „thisObj“ verwendet.

Erklären Sie, dass die Funktion der Aufrufmethode tatsächlich darin besteht, diesen Punkt der Standardmethode zu ändern. Die Aufrufmethode muss ein Methodenobjekt sein. Wenn der Aufruf aufgerufen wird, wird dieser Punkt des Methodenobjekts zum ersten Parameter der Aufrufmethode.

var p = new Person();

Wenn der Konstruktor Person aufgerufen wird, kann er durch Aufruf verarbeitet werden, sodass dieser in Person auf p zeigt. This.age = 1 entspricht p.age = 1, sodass das Altersattribut zu p hinzugefügt wird.

Ich hoffe, dass dieser Artikel für das JavaScript-Programmierdesign aller hilfreich sein wird.

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