In diesem Artikel werden die Methoden und Prinzipien verschiedener Funktionsaufrufe in JavaScript ausführlich vorgestellt, was für das Verständnis von JavaScript-Funktionen sehr hilfreich ist!
JavaScript, 5 Möglichkeiten, Funktionen aufzurufen
Ich stelle immer wieder fest, dass fehlerhafter JavaScript-Code darauf zurückzuführen ist, dass wir nicht wirklich verstehen, wie JavaScript-Funktionen funktionieren (übrigens habe ich viele dieser Codes über funktionale Programmiereigenschaften geschrieben, wenn wir uns damit auseinandersetzen). Es wird ein Hindernis für unseren Fortschritt sein
Als Anfänger testen wir fünf Methoden zum Funktionsaufruf. Oberflächlich betrachtet werden wir denken, dass diese Funktionen den Funktionen in C# sehr ähnlich sind, aber wir werden gleich sehen, dass es immer noch sehr wichtige Unterschiede gibt. Das Ignorieren dieser Unterschiede wird zweifellos dazu führen, dass Fehler schwer zu verfolgen sind. Lassen Sie uns zunächst eine einfache Funktion erstellen, die im Folgenden verwendet wird. Diese Funktion gibt nur den aktuellen Wert dieses und der beiden bereitgestellten Parameter zurück
Als wir Javascript lernten, lernten wir, wie man Funktionen mithilfe der Syntax im obigen Beispiel definiert.
Wir wissen auch, dass der Aufruf dieser Funktion sehr einfach ist. Wir müssen lediglich Folgendes tun:
JavaScript-Funktionsaufrufregel 1
In Funktionen, die direkt ohne explizites Eigentümerobjekt aufgerufen werden, wie z. B. myFunction(), führt der Wert von this dazu, dass der Wert von this zum Standardobjekt (Fenster im Browser) wird.
Funktionsaufruf
Lassen Sie uns jetzt ein einfaches Objekt erstellen und dabei die Funktion makeArray als eine seiner Methoden verwenden. Wir werden JSON verwenden, um ein Objekt zu deklarieren, und wir werden diese Methode auch aufrufen
JavaScript-Funktionsaufrufregel 2
In einer Methodenaufrufsyntax wie obj.myFunction() oder obj['myFunction']() ist der Wert davon obj
Dies ist eine Hauptquelle für Fehler im Ereignisverarbeitungscode. Schauen Sie sich diese Beispiele an
Wenn Sie auf die erste Schaltfläche klicken, wird „btn“ angezeigt, da es sich um einen Methodenaufruf handelt, und dies ist das Objekt (Schaltflächenelement), zu dem es gehört. Wenn Sie auf die zweite Schaltfläche klicken, wird „window“ angezeigt, da buttonClicked direkt aufgerufen wird (im Gegensatz zu obj. buttonClicked().) Dies ist dasselbe wie unsere dritte Schaltfläche, wobei die Event-Handler-Funktion direkt in der Beschriftung platziert wird. Das Ergebnis des Klickens auf die dritte Schaltfläche ist also dasselbe wie das der zweiten
Die Verwendung einer JS-Bibliothek wie jQuery hat den Vorteil, dass die JS-Bibliothek beim Definieren einer Ereignisbehandlungsfunktion in jQuery dabei hilft, den Wert dieser Funktion neu zu schreiben, um sicherzustellen, dass sie einen Verweis auf das aktuelle Ereignisquellenelement
enthält
Je mehr Sie JavaScript-Funktionen verwenden, desto mehr müssen Sie Funktionen übergeben und in verschiedenen Kontexten aufrufen, genau wie Qjuery es in Ereignishandlern tut, und Sie müssen den Wert davon oft zurücksetzen Sie, Funktionen sind auch Objekte in Javascript. Zwei davon sind apply() und call(). Wir können sie verwenden, um dies zu ändern.
JSascript-Funktionsaufrufregel 3
Wenn wir den Wert davon überladen möchten, ohne die Funktion in eine Methode zu kopieren, können wir myFunction.apply( obj ) oder myFunction.call( obj ) verwenden.Konstrukteur
Ich möchte mich nicht mit der Definition von Typen in Javascript befassen, aber an diesem Punkt müssen wir wissen, dass es in Javascript keine Klassen gibt und jeder benutzerdefinierte Typ eine Initialisierungsfunktion benötigt, die mithilfe des Prototypobjekts definiert wird (as ein Attribut der Initialisierungsfunktion) Ihr Typ ist auch ein netter Ismus, erstellen wir einen einfachen Typ
Eine sehr wichtige und bemerkenswerte Sache ist der neue Operator, der vor dem Funktionsaufruf erscheint. Ohne ihn ist Ihre Funktion wie eine globale Funktion, und die von uns erstellten Eigenschaften werden für das globale Objekt (Fenster) und Sie erstellt Wenn Sie das nicht möchten, ist ein anderes Thema, dass, wenn Sie vergessen, den neuen Operator zu verwenden, einige Ihrer Variablen zugewiesen werden, da Ihr Konstruktor keinen Rückgabewert hat. Aus diesem Grund ist die Konstruktorfunktion nicht definiert Es ist eine gute Angewohnheit, mit einem Großbuchstaben zu beginnen, der als Erinnerung daran dienen kann, beim Anruf den vorherigen neuen Operator nicht zu vergessen
Mit dieser Vorsicht ähnelt der Code in der Initialisierungsfunktion der Initialisierungsfunktion, die Sie in anderen Sprachen schreiben. Der Wert davon ist das Objekt, das Sie erstellen werden.
Javascript-Funktionsaufrufregel 4
Wenn Sie eine Funktion wie MyFunction() als Initialisierungsfunktion verwenden, weist die Javascript-Laufzeit den Wert dieser dem neu erstellten Objekt zu.Ich hoffe, dass das Verständnis der Unterschiede in der Art und Weise, wie verschiedene Funktionen aufgerufen werden, Ihren JavaScript-Code von Fehlern fernhält, und sicherzustellen, dass Sie immer wissen, welchen Wert dies hat, ist der erste Schritt, um sie zu vermeiden.