Function
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Das Function
Objekt bietet Methoden für Funktionen. In JavaScript ist jede Funktion eigentlich ein Function
Objekt.
Konstruktor
Function()
-
Erstellt ein neues
Function
Objekt. Der direkte Aufruf des Konstruktors kann Funktionen dynamisch erstellen, leidet jedoch unter Sicherheitsproblemen und ähnlichen (aber weit weniger signifikanten) Leistungsproblemen wieeval()
. Im Gegensatz zueval()
erstellt derFunction
Konstruktor jedoch Funktionen, die nur im globalen Gültigkeitsbereich ausgeführt werden.
Instanz-Eigenschaften
Diese Eigenschaften sind auf Function.prototype
definiert und werden von allen Function
Instanzen geteilt.
Function.prototype.arguments
Veraltet Nicht standardisiert-
Repräsentiert die an diese Funktion übergebenen Argumente. Für strikte, Pfeil-, asynchrone und Generatorfunktionen löst der Zugriff auf die
arguments
Eigenschaft einenTypeError
aus. Verwenden Sie stattdessen dasarguments
Objekt innerhalb von Funktionsbindungen. Function.prototype.caller
Veraltet Nicht standardisiert-
Repräsentiert die Funktion, die diese Funktion aufgerufen hat. Für strikte, Pfeil-, asynchrone und Generatorfunktionen löst der Zugriff auf die
caller
Eigenschaft einenTypeError
aus. Function.prototype.constructor
-
Die Konstruktionsfunktion, die das Instanzobjekt erstellt hat. Für
Function
Instanzen ist der anfängliche Wert derFunction
Konstruktor.
Diese Eigenschaften sind eigene Eigenschaften jeder Function
Instanz.
displayName
Nicht standardisiert Optional-
Der Anzeigename der Funktion.
length
-
Gibt die Anzahl der Argumente an, die die Funktion erwartet.
name
-
Der Name der Funktion.
prototype
-
Wird verwendet, wenn die Funktion als Konstruktor mit dem
new
Operator verwendet wird. Es wird das neue Prototypobjekt.
Instanz-Methoden
Function.prototype.apply()
-
Ruft eine Funktion mit einem angegebenen
this
Wert und optionalen Argumenten auf, die als Array (oder ein array-ähnliches Objekt) bereitgestellt werden. Function.prototype.bind()
-
Erstellt eine neue Funktion, die, wenn sie aufgerufen wird, das
this
Schlüsselwort auf einen bereitgestellten Wert setzt, optional mit einer gegebenen Sequenz von Argumenten, die jedem bereitgestellten bei Aufruf der neuen Funktion vorangehen. Function.prototype.call()
-
Ruft eine Funktion mit einem angegebenen
this
Wert und optionalen Argumenten auf. Function.prototype.toString()
-
Gibt eine Zeichenkette zurück, die den Quellcode der Funktion darstellt. Überschreibt die
Object.prototype.toString
Methode. Function.prototype[Symbol.hasInstance]()
-
Gibt das Standardverfahren an, um festzustellen, ob eine Konstruktionsfunktion ein Objekt als eine der Instanzen des Konstruktors erkennt. Wird vom
instanceof
Operator aufgerufen.
Beispiele
Unterschied zwischen Function-Konstruktor und Funktionsdeklaration
Funktionen, die mit dem Function
Konstruktor erstellt werden, erstellen keine Closures zu ihren Erzeugungskontexten; sie werden immer im globalen Gültigkeitsbereich erstellt. Beim Ausführen können sie nur auf ihre eigenen lokalen und globalen Variablen zugreifen, nicht auf die aus dem Bereich, in dem der Function
Konstruktor erstellt wurde. Dies unterscheidet sich von der Verwendung von eval()
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()); // 10
const f2 = createFunction2();
console.log(f2()); // 20
Während dieser Code in Webbrowsern funktioniert, wird f1()
in Node.js einen ReferenceError
erzeugen, da x
nicht gefunden wird. Dies liegt daran, dass der oberste Gültigkeitsbereich in Node nicht der globale Gültigkeitsbereich ist und x
lokal zum Modul sein wird.
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-function-objects |
Browser-Kompatibilität
BCD tables only load in the browser