--- title: GeneratorFunction slug: Web/JavaScript/Reference/Global_Objects/GeneratorFunction tags: - Constructor - ECMAScript 2015 - GeneratorFunction - Iterator - JavaScript - Reference translation_of: Web/JavaScript/Reference/Global_Objects/GeneratorFunction ---
Der GeneratorFunction Konstruktor erstellt eine neues {{jsxref("Statements/function*", "Generator Funktion")}} Objekt. aktuell ist in JavaScript jede Generatorfunktion ein GeneratorFunction Objekt.
Zu beachten ist, dass GeneratorFunction kein globales Objekt ist. Es kann mit folgendem Quelltext erhalten werden.
Object.getPrototypeOf(function*(){}).constructor
new GeneratorFunction ([arg1[, arg2[, ...argN]],] functionBody)
arg1, arg2, ... argNx", "theValue", oder "a,b"functionBody{{jsxref("Statements/function*", "Generator Funktion")}} Objekte, die mit dem GeneratorFunction Konstruktor erstellt werden übersetzt, wenn die Funktion erstellt wird. Das ist weniger effizient als die Erstellung mit einer {{jsxref("Statements/function*", "function* Ausdruck")}} und Aufrufe im Quelltext, weil solche Funktionen dem dem Rest des Quelltextes übersetzt werden.
Alle Argumente, die der Funktion übergeben werden, werden als Namen der Bezeichner behandelt und werden als Parameter der Funktion übergen. Die Reihenfolge ist die angegebene Reihenfolge.
Hinweis: {{jsxref("Statements/function*", "Generator Function")}}, die mit dem GeneratorFunction Konstruktor erstellt werden erstellen keine Closures im Erstellungskontext. Sie werden immer im globalen Sichtbarkeitsbereich erstellt. Wenn diese ausgeführt werden, haben sie nur Zugriff auf eigene lokale Variablen und globale Variablen, jedoch nicht auf Variablen des Scopes, in der GeneratorFunction Konstruktor aufgerufen wird. Dieses unterscheidet diese Methode von {{jsxref("Global_Objects/eval", "eval")}} mit dem Quelltext einer Generatorfunktion.
Das Aufrufen des GeneratorFunction Konstruktors als Funktion (ohne Einsatz des new Operator) hat den selben Effekt wie beim Aufruf als Konstruktor.
GeneratorFunction.lengthGeneratorFunction Konstruktor Eigenschaft, welche 1 ist.GeneratorFunction Prototyp ObjektGeneratorFunction InstanzenGeneratorFunction Instanzen erben Methoden und Eigenschaften von {{jsxref("GeneratorFunction.prototype")}}. Wie bei allen Konstruktoren, kann man das Konstruktor Prototyp Objekt ändern, um diese für alle GeneratorFunction Instanzen zu übernehmen.
GeneratorFunction Konstruktorvar GeneratorFunction = Object.getPrototypeOf(function*(){}).constructor
var g = new GeneratorFunction('a', 'yield a * 2');
var iterator = g(10);
console.log(iterator.next().value); // 20
| Spezifikation | Status | Kommentar |
|---|---|---|
| {{SpecName('ES2015', '#sec-generatorfunction-objects', 'GeneratorFunction')}} | {{Spec2('ES2015')}} | Initiale Definition. |
| {{SpecName('ESDraft', '#sec-generatorfunction-objects', 'GeneratorFunction')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.GeneratorFunction")}}