JavaScript -Funktionsaufruf
Der Code in einem JavaScript function
wird ausgeführt, wenn „etwas“ ihn aufruft.
Aufruf einer JavaScript-Funktion
Der Code innerhalb einer Funktion wird nicht ausgeführt, wenn die Funktion definiert wird .
Der Code innerhalb einer Funktion wird ausgeführt, wenn die Funktion aufgerufen wird .
Es ist üblich, den Begriff „ eine Funktion aufrufen “ anstelle von „ eine Funktion aufrufen “ zu verwenden.
Es ist auch üblich zu sagen „eine Funktion aufrufen“, „eine Funktion starten“ oder „eine Funktion ausführen“.
In diesem Tutorial verwenden wir invoke , da eine JavaScript-Funktion aufgerufen werden kann, ohne aufgerufen zu werden.
Aufrufen einer Funktion als Funktion
Beispiel
function myFunction(a, b) {
return a * b;
}
myFunction(10, 2); //
Will return 20
Die obige Funktion gehört zu keinem Objekt. Aber in JavaScript gibt es immer ein globales Standardobjekt.
In HTML ist das standardmäßige globale Objekt die HTML-Seite selbst, also „gehört“ die obige Funktion zur HTML-Seite.
In einem Browser ist das Seitenobjekt das Browserfenster. Die obige Funktion wird automatisch zu einer Fensterfunktion.
myFunction() und window.myFunction() ist dieselbe Funktion:
Beispiel
function myFunction(a, b) {
return a * b;
}
window.myFunction(10, 2); // Will also return 20
Dies ist eine übliche Methode zum Aufrufen einer JavaScript-Funktion, aber keine sehr gute Vorgehensweise.
Globale Variablen, Methoden oder Funktionen können leicht Namenskonflikte und Fehler im globalen Objekt erzeugen.
Das Schlüsselwort this
In JavaScript ist das Ding namens this
, das Objekt, das den aktuellen Code „besitzt“.
Der Wert von this
, wenn er in einer Funktion verwendet wird, ist das Objekt, das die Funktion "besitzt".
Beachten Sie, dass this
dies keine Variable ist. Es ist ein Schlüsselwort. Sie können den Wert von nicht ändern this
.
Tipp: Lesen Sie mehr über das this
Schlüsselwort bei JS this Keyword .
Das globale Objekt
Wenn eine Funktion ohne Eigentümerobjekt aufgerufen wird, wird der Wert von this
zum globalen Objekt.
In einem Webbrowser ist das globale Objekt das Browserfenster.
Dieses Beispiel gibt das Fensterobjekt als Wert von zurück this
:
Beispiel
let x = myFunction();
// x will be the window object
function myFunction() {
return this;
}
Das Aufrufen einer Funktion als globale Funktion bewirkt, dass der Wert davon das globale Objekt ist.
Die Verwendung des Fensterobjekts als Variable kann Ihr Programm leicht zum Absturz bringen.
Aufrufen einer Funktion als Methode
In JavaScript können Sie Funktionen als Objektmethoden definieren.
Das folgende Beispiel erstellt ein Objekt ( myObject ) mit zwei Eigenschaften ( firstName und lastName ) und einer Methode ( fullName ):
Beispiel
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
myObject.fullName(); // Will return "John Doe"
Die Methode fullName ist eine Funktion. Die Funktion gehört zum Objekt. myObject ist der Eigentümer der Funktion.
Das Ding namens this
ist das Objekt, das den JavaScript-Code „besitzt“. In diesem Fall ist der Wert this
von myObject .
Probier es aus! Ändern Sie die Methode fullName so, dass sie den Wert von zurückgibt this
:
Beispiel
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this;
}
}
// This will return [object Object] (the owner object)
myObject.fullName();
Das Aufrufen einer Funktion als Objektmethode bewirkt, dass der Wert von this
das Objekt selbst ist.
Aufruf einer Funktion mit einem Funktionskonstruktor
Wenn einem Funktionsaufruf das Schlüsselwort vorangestellt ist new
, handelt es sich um einen Konstruktoraufruf.
Es sieht so aus, als würden Sie eine neue Funktion erstellen, aber da JavaScript-Funktionen Objekte sind, erstellen Sie tatsächlich ein neues Objekt:
Beispiel
// This is a function constructor:
function myFunction(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}
// This creates a new object
const myObj = new myFunction("John", "Doe");
// This will return "John"
myObj.firstName;
Ein Konstruktoraufruf erstellt ein neues Objekt. Das neue Objekt erbt die Eigenschaften und Methoden von seinem Konstruktor.
Das this
Schlüsselwort im Konstruktor hat keinen Wert.
Der Wert von this
ist das neue Objekt, das erstellt wird, wenn die Funktion aufgerufen wird.