Heim >Web-Frontend >js-Tutorial >Beispiel für das Parsen in Js

Beispiel für das Parsen in Js

不言
不言Original
2018-04-10 14:17:491443Durchsuche

Der mit Ihnen in diesem Artikel geteilte Inhalt befasst sich beispielsweise mit dem Parsen von Js. Freunde in Not können sich darauf beziehen


Beginnen Sie mit einem Beispiel von vorne


Als ich mir vor ein paar Tagen Interviewfragen ansah, sah ich dieses Programm:

obj = {
  name: 'a',
  getName: function () {
    console.log(this.name);
  }
};

var fn = obj.getName;obj.getName();fn();

Die erforderliche Frage ist hierfn()Das Ausführungsergebnis und Ausführungszeit this Zeigeproblem. Lassen Sie uns die Verwendung anhand dieses Beispiels und der darin enthaltenen Fragen noch einmal zusammenfassen.

Die Ausführungsumgebung davon

Die Richtung davon wird entsprechend seiner Ausführungsumgebung bestimmt. Es gibt hauptsächlich die folgenden Situationen:

1 Globaler Kontext

Die globale Umgebung liegt außerhalb jeder Funktion. Wenn diese verwendet wird, bezieht sich dies auf das globale Objekt. Zum Beispiel im Browser:

this === window    // true

2 Funktionskontext

Im Funktionskontext, also beim Aufruf innerhalb der Funktion, kommt es darauf an, wie dieser aufgerufen wird.

2.1 Einfacher Aufruf

Bei einem einfachen Aufruf zeigt dies in der Funktion auf das globale Objekt, wie zum Beispiel:

function myFun() {
   console.log(this === window);
}

myFun();    // true

Im obigen Beispiel ist die Funktion myFun wird direkt aufgerufen, wobei this gleich dem globalen Objekt window ist.
Das Prinzip besteht darin, dass bei der Deklaration der Funktion myFun diese als Attribut des globalen Objekts existiert . Wenn diese Funktion also direkt verwendet wird, entspricht sie dem Aufruf von window.myFun(), d. h. wenn sie als Attribut von window aufgerufen wird, zeigt this auf window.

Debuggen Sie dieses Programm im Browser, um es klarer zu überprüfen:
Beispiel für das Parsen in Js

2.2 Als Methode eines Objekts

Wenn eine Funktion als verwendet wird Methode eines Objekts Beim Aufruf zeigt dies auf dieses Objekt. Nehmen wir das erste Beispiel als Beispiel: Wenn obj.getName() ausgeführt wird, zeigt dies in der Funktion auf das Objekt obj. Also Ausgabe a.
Aber wenn wir diese Funktion separat trennen, ändern Sie das ursprüngliche Beispiel:

function myFun() {
  console.log(this.name);
}var obj = {
  name: 'a',
  getName: myFun
};

obj.getName();    // avar obj2 = {
  name: 'b',
  fun: myFun
};

obj2.fun();   // b

Wie aus diesem Beispiel ersichtlich ist, hängt die Richtung von this vollständig von der nächstgelegenen Elementreferenz , an welches Objekt und welche Referenz die Funktion gebunden ist, dann hat dies unterschiedliche Punkte. Im obigen Beispiel haben wir die Funktionen mit an verschiedene Objekte als ihre Methoden gebunden, dann werden die ihnen entsprechenden This an verschiedene Objekte gebunden und die Werte von this werden unterschiedlich sein. this.nameWenn wir
direkt ausführen, wird diese Funktion ebenfalls als Eigenschaft des globalen Objekts myFun() aufgerufen. Das Attribut window kann also nicht gefunden werden und myName wird ausgegeben. undefined(Da das globale Objekt das Standardattribut window hat, das eine leere Zeichenfolge ist, wird name hier als Beispiel verwendet) myName

function myFun() {
  console.log(this.myName);
}
myFun();    // undefined
Erklären Sie abschließend das Beispiel zu Beginn:

ist obj.getName zugewiesen, daher entspricht die Ausführung von fn der Ausführung von fn, d. h. die anonyme Funktion, die ursprünglich als Attribut von obj initialisiert wurde, ist an window.fn() von -Attribut, daher zeigt sein window auf fn. thisDas window-Attribut von
ist eine leere Zeichenfolge, daher ist die Ausgabe leer. windownameVerwandte Empfehlungen:

Detaillierte Erklärung dieses Attributs in Javascript

Detailliertes Verständnis dieses Zeigers in Javascript

Das obige ist der detaillierte Inhalt vonBeispiel für das Parsen in Js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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