Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Function
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
* Some parts of this feature may have varying levels of support.
DasFunction-Objekt stellt Methoden fürFunktionen bereit. In JavaScript ist jede Funktion tatsächlich einFunction-Objekt.
In diesem Artikel
Konstruktor
Function()Erstellt ein neues
Function-Objekt. Der direkte Aufruf des Konstruktors kann Funktionen dynamisch erstellen, leidet jedoch unter Sicherheits- und ähnlichen (aber weit weniger signifikanten) Leistungsproblemen wieeval(). Im Gegensatz zueval()erstellt derFunction-Konstruktor jedoch Funktionen, die nur im globalen Geltungsbereich ausgeführt werden.
Instanz-Eigenschaften
Diese Eigenschaften sind aufFunction.prototype definiert und werden von allenFunction-Instanzen geteilt.
Function.prototype.argumentsVeraltetNicht standardisiertRepräsentiert die an diese Funktion übergebenen Argumente. Beistrict, Pfeil-, asynchronen und Generator-Funktionen löst der Zugriff auf die
arguments-Eigenschaft einenTypeErroraus. Verwenden Sie stattdessen dasarguments-Objekt innerhalb von Funktionsabschlüssen.Function.prototype.callerVeraltetNicht standardisiertRepräsentiert die Funktion, die diese Funktion aufgerufen hat. Beistrict, Pfeil-, asynchronen und Generator-Funktionen löst der Zugriff auf die
caller-Eigenschaft einenTypeErroraus.Function.prototype.constructorDie Konstrukturfunktion, die das Instanzobjekt erstellt hat. Bei
Function-Instanzen ist der Anfangswert derFunction-Konstruktor.
Diese Eigenschaften sind eigene Eigenschaften jederFunction-Instanz.
displayNameNicht standardisiertOptionalDer Anzeigename der Funktion.
lengthGibt die Anzahl der von der Funktion erwarteten Argumente an.
nameDer Name der Funktion.
prototypeWird verwendet, wenn die Funktion als Konstruktor mit dem
new-Operator verwendet wird. Es wird das neue Prototypobjekt des Objekts.
Instanzmethoden
Function.prototype.apply()Ruft eine Funktion mit einem gegebenen
this-Wert und optionalen Argumenten auf, die als Array (oder einArray-ähnliches Objekt) bereitgestellt werden.Function.prototype.bind()Erstellt eine neue Funktion, die, wenn sie aufgerufen wird, ihr
this-Schlüsselwort auf einen bereitgestellten Wert gesetzt hat, optional mit einer bestimmten Sequenz von Argumenten, die den beim Aufruf der neuen Funktion bereitgestellten Argumenten vorangestellt werden.Function.prototype.call()Ruft eine Funktion mit einem gegebenen
this-Wert und optionalen Argumenten auf.Function.prototype.toString()Gibt einen String zurück, der den Quellcode der Funktion darstellt. Überschreibt die
Object.prototype.toStringMethode.Function.prototype[Symbol.hasInstance]()Gibt das Standardverfahren an, um zu bestimmen, ob eine Konstrukturfunktion ein Objekt als eine ihrer Instanzen erkennt. Wird vom
instanceof-Operator aufgerufen.
Beispiele
>Unterschied zwischen Function-Konstruktor und Funktionsdeklaration
Funktionen, die mit demFunction-Konstruktor erstellt wurden, erstellen keine Closures zu ihren Erstellungskontexten; sie werden immer im globalen Geltungsbereich erstellt. Beim Ausführen können sie nur auf ihre eigenen lokalen Variablen und globale Variablen zugreifen, nicht auf die Variablen aus dem Geltungsbereich, in dem derFunction-Konstruktor erstellt wurde. Dies unterscheidet sich von der Verwendung voneval() mit Code für einen Funktionsausdruck.
// Create a global property with `var`var x = 10;function createFunction1() { const x = 20; return new Function("return x;"); // this `x` refers to global `x`}function createFunction2() { const x = 20; function f() { return x; // this `x` refers to the local `x` above } return f;}const f1 = createFunction1();console.log(f1()); // 10const f2 = createFunction2();console.log(f2()); // 20Während dieser Code in Webbrowsern funktioniert, wirdf1() in Node.js einenReferenceError erzeugen, dax nicht gefunden wird. Dies liegt daran, dass der oberste Bereich in Node nicht der globale Bereich ist undx lokal für das Modul sein wird.
Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-function-objects> |