Heim >Web-Frontend >js-Tutorial >Detaillierte Einführung in den Umfang der JavaScript-Funktionen und diesen Zeiger
Der folgende Editor vermittelt Ihnen ein detailliertes Verständnis des Umfangs und dieses Zeigers der js-Funktionen. Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Editor und werfen wir einen Blick darauf.
Der Funktionsumfang und dieser Zeiger sind sehr wichtige Teile von js. Um diese Sache zu verdeutlichen, brauchen wir eine Logik...
Im Folgenden finden Sie eine Übersicht. Sie können die Artikel, die Sie interessieren, direkt auswählen und lesen.
• Funktionsdefinitionsmethode: direkte Definition (unter Fenster, interne Definition), Objektmethode, Objektprototypmethode
• Funktionsaufrufmethode: direkter Aufruf, Aufruf/ apply, with
• Bei direkt definierten Funktionen und Methoden von Objekten entspricht der Bereich standardmäßig der Bereichskette, in der er definiert ist.
• Bei direkt definierten Funktionen zeigt dies auf das Fenster.
• Bei Objektmethoden zeigt dies auf das instanziierte Objekt (entsprechend dem Fall, in dem das instanziierte Objekt dies standardmäßig zurückgibt).
• Verwenden Sie call/apply, um diesen Punkt der Methode zu ändern.
• Wenn Sie eine Funktion oder Methode definieren, können Sie deren Gültigkeitsbereichskette mit ändern.
Lassen Sie uns im Folgenden ausführlich darüber sprechen:
Die Definition von Funktionen, wie in der Gliederung erwähnt, kann in zwei Typen unterteilt werden: direkte Definition (unter Fenster, intern definiert), Objektmethoden (oder Objektprototypmethoden). Aus dem folgenden Beispielcode können Sie ersehen, dass die Funktionen fn1 und fn2 sowie die Methode doFunction des Objekts verwendet werden. Wenn die Funktion name verwendet, stammt der Wert von name aus dem entsprechenden Feld.
var name = 'window下的name<br/>'; var resultCon; function fn1() { resultCon.innerHTML += name; } function MyObj() { var name = 'MyObj下的name<br/>'; this.doFunction = function() { resultCon.innerHTML += name;
Was passiert, wenn „name“ durch „this.name“ ersetzt wird, wenn der Wert „name“ verwendet wird? . Beispiel:
var name = 'window下的name<br/>'; var resultCon; function fn1() { resultCon.innerHTML += this.name; } function MyObj() { var name = 'MyObj下的name<br/>'; this.doFunction = function() { resultCon.innerHTML += this.name;
Anhand der Ergebnisse können wir die Punkte 4 und 5 in der Gliederung überprüfen. Wir können auch sehen, dass es sich hierbei um zwei separate Sätze handelt Folgen Sie Ihrer eigenen Variablenabfragelogik. Die spezifische Abfragelogik wird in der folgenden Leistungsanalyse erwähnt. Wenn Sie ein Anfänger sind, wird empfohlen, sich zunächst mit den Grundkenntnissen der „js-Bereichskette“ zu befassen.
Bezüglich der Funktionsaufrufmethode verwende ich das folgende Beispiel, um die Elemente 2 und 6 in der Gliederung zu veranschaulichen:
var name = 'window下的name<br/>'; var resultCon; function fn1() { resultCon.innerHTML += this.name; } function MyObj() { var name = 'MyObj下的name<br/>'; this.doFunction = function() { resultCon.innerHTML += this.name;
call und Apply wird verwendet um den This-Zeiger der aufgerufenen Funktion zu ändern. Die Verwendung von with besteht darin, die Abfragedomäne von Variablen in der aufgerufenen Funktion zu ändern. Wir entfernen dies vor „call“ und „name“ im obigen Beispiel und fügen „with“ hinzu, um die Funktion von „with“ zu demonstrieren.
var name = 'window下的name<br/>'; var resultCon; function fn1(myScope) { with (myScope) { resultCon.innerHTML += name; } } function MyObj(myScope) { var name = 'MyObj下的name<br/>';
Da die Verwendung von with nicht praktisch ist, müssen Sie with in der aufgerufenen Funktion hinzufügen. Einige Leute fragen sich vielleicht, ob es wie folgt aufgerufen werden kann die Gesamtrolle der Variablendomäne ändern, ohne die aufgerufene Funktion zu ändern?
with (myScope) { fn1(); fn2(); var obj = new MyObj(); obj.doFunction(); }
Tut mir leid, nein! Daher kann Call and Apply in einigen ausgereiften Frameworks verwendet werden, wird jedoch selten verwendet, wenn JSHint zur Erkennung der JS-Syntax verwendet wird. In einigen JS-Codierungsanleitungen wird die Verwendung ebenfalls empfohlen so wenig wie möglich mit, da Änderungen an der Standardabfragekette von Variablen bei späteren Betreuern zu Verwirrung führen und einige Leistungsaspekte zu berücksichtigen sind. Verwenden Sie daher bitte mit Vorsicht.
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Umfang der JavaScript-Funktionen und diesen Zeiger. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!