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 wie eval(). Im Gegensatz zu eval() erstellt der Function 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 einen TypeError aus. Verwenden Sie stattdessen das arguments 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 einen TypeError aus.

Function.prototype.constructor

Die Konstruktionsfunktion, die das Instanzobjekt erstellt hat. Für Function Instanzen ist der anfängliche Wert der Function 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.

js
// 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

Siehe auch