Der Umfang der Funktionen und dieses Zeigen sind sehr wichtige Teile von JS. Es braucht eine Logik, um dieses Ding zu klären und zu sehen, wie meine Logik ist ...
Im Folgenden finden Sie eine Übersicht, dass Sie die Elemente, an denen Sie interessiert sind, direkt auswählen können.
• Funktionsdefinitionsmethode: Direkte Definition (unter Fenster, interne Definition), Objektmethoden, Objektprototypmethoden;
• Funktionsaufrufmethode: Rufen Sie direkt an, rufen Sie/bewerben Sie mit
• Für Methoden direkt definierter Funktionen und Objekte ist der Umfang der Umfang der Umfangskette bei ihrer Definition standardmäßig.
• Für direkt definierte Funktionen weist dies auf das Fenster hin.
• Für die Methode des Objekts verweist dies auf das instanziierte Objekt (entsprechend dem Fall, in dem das instanziierte Objekt dies standardmäßig zurückgibt).
• Rufen Sie den Anruf/bewerben Sie an, um diesen Hinweis auf die Methode zu ändern
• Bei der Definition einer Funktion oder Methode kann seine Bereichskette mit mit dem With geändert werden.
Lassen Sie uns unten ausführlich darüber sprechen:
Die Definition von Funktionen, wie in der Umriss erwähnt, kann in zwei Typen unterteilt werden: direkte Definition (unter Fenster, interne Definition), Objektmethoden (oder Objektprototypmethoden). Aus dem folgenden Beispielcode können Sie feststellen, dass die Funktion FN1 und FN2 und die Methode des Objekts aus der entsprechenden Domäne stammen, wenn die Funktion den Namen verwendet.
var name = 'Name unter Fenster <br/>'; this.dofunction = function () {resultcon.innerHtml += name;Was passiert, wenn "Name" durch "this.name" ersetzt wird, wenn der Name des Namens verwendet wird? Siehe das folgende Beispiel:
var name = 'Name unter Fenster <br/>'; this.dofunction = function () {resultcon.innerHtml += this.name;Nach den Ergebnissen können wir die 4. und 5. Elemente in der Umriss überprüfen. Wir können auch sehen, dass dies und Umfang zwei separate Kettensätze sind, die nach einer unabhängigen variablen Abfragelogik sind. Die spezifische Abfragelogik wird in der folgenden Leistungsanalyse erwähnt. Wenn Sie ein Anfänger sind, wird empfohlen, zunächst das Grundwissen der "JS Scope -Kette" zu betrachten.
In Bezug auf die Aufrufmethode einer Funktion verwende ich das folgende Beispiel, um den 2. und 6. Artikel in der Umriss zu veranschaulichen:
var name = 'Name unter Fenster <br/>'; this.dofunction = function () {resultcon.innerHtml += this.name;Die Verwendung von Anrufe und Bewerben, wenn Sie aufgerufen werden, ist die Änderung des Zeigens der aufgerufenen Funktion. Die Verwendung von mit ist, die Abfragedomäne der Variablen in der aufgerufenen Funktion zu ändern. Wir entfernen den Anruf und den Namen im obigen Beispiel und fügen hinzu, um die Funktion von mit zu demonstrieren.
var name = 'Name unter Fenster <br/>'; var resultcon; Funktion fn1 (myScope) {mit (myScope) {resultcon.innnerHtml += name; }} Funktion myObj (myScope) {var name = 'name unter myobj <br/>';Es ist nicht bequem zu verwenden, und Sie müssen mit der aufgerufenen Funktion hinzufügen. Einige Leute fragen sich vielleicht, ob Sie Folgendes anrufen können, um den Umfang der Variablen als Ganzes zu ändern, ohne die aufgerufene Funktion zu ändern?
mit (myScope) {fn1 (); fn2 (); var obj = new myobj (); obj.dofunction ();}Leider nein! Daher können Anrufe und Bewerben überall in einigen ausgereiften Frameworks verwendet werden, aber mit wird selten verwendet. Bei der Verwendung von JSHINT, um die JS -Syntax zu erkennen, sind kleine rote Punkte mit dem mit. In einigen JS -Codierungsanleitungen wird auch empfohlen, mit so wenig wie möglich zu verwenden, da es mit Änderungen an der Standardabfragekette von Variablen später verwirklicht wird, und einige Leistungsüberlegungen. Bitte verwenden Sie mit mit mit Vorsicht.
Der obige Artikel versteht den Umfang und diese Richtung von JS -Funktionen ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, es kann Ihnen eine Referenz geben und ich hoffe, Sie können Wulin.com mehr unterstützen.