GeneratorFunction コンストラクター は新しいジェネレーター関数 オブジェクトを生成します。 JavaScriptでは、あらゆるジェネレーター関数は実際にGeneratorFunction オブジェクトです。

GeneratorFunction はグローバルオブジェクトではないことに注意して下さい。次のコードを評価することによって得られます。

Object.getPrototypeOf(function*(){}).constructor

構文

new GeneratorFunction ([arg1[, arg2[, ...argN]],] functionBody)

引数

arg1, arg2, ... argN
正式な引数名として関数によって使われる名称。正当な JavaScript 識別子かカンマで分割されている文字列のリストに一致する文字列でなければなりません。例えば、 "x"、 "theValue"、 "a,b"です。
functionBody
関数定義から成るJavaScriptを含む文字列

説明

GeneratorFunctionコンストラクターで生成されたジェネレーター関数 オブジェクトは、関数が生成された際にパースされます。これは function* expression を持ったジェネレーター関数を宣言してコード内で呼び出すよりも効率が良いです。というのも、そのような関数はコードの残り部分でパースされるからです。

関数に通されたすべての引数は、通された順番の通りに、生成される関数内の引数の識別子の名称として扱われます。

注意: GeneratorFunctionコンストラクターで生成されたgenerator function はその作成コンテキストにクロージャを作成しません。常にグローバルスコープで生成されます。実行すると、GeneratorFunctionコンストラクターが呼ばれているスコープの変数ではなく、ローカル変数とグローバル変数にアクセスできます。これはジェネレーター関数表現に対するコードでevalを使うのとは違います。

(new 演算子を用いずに) 関数としてGeneratorFunction コンストラクターを呼び出すことは、コンストラクターを呼び出すのと同じ効果を持っています。

プロパティ

GeneratorFunction.length
GeneratorFunction コンストラクターの長さプロパティ。値は1です。
GeneratorFunction.prototype
すべてのジェネレーター関数オブジェクトにプロパティの追加を許します。

GeneratorFunction プロトタイプオブジェクト

プロパティ

GeneratorFunction.constructor
The initial value is GeneratorFunction.
GeneratorFunction.prototype.prototype
The value is %GeneratorPrototype%.

GeneratorFunction インスタンス

GeneratorFunction インスタンスはGeneratorFunction.prototypeからメソッドとプロパティを継承します。すべてのコンストラクターと同様に、すべてのGeneratorFunctionインスタンスに変更を加えるためにコンストラクターのプロトタイプオブジェクトを変更出来ます。

GeneratorFunctionコンストラクターからジェネレーター関数を生成します。

var GeneratorFunction = Object.getPrototypeOf(function*(){}).constructor
var g = new GeneratorFunction("a", "yield a * 2");
var iterator = g(10);
console.log(iterator.next().value); // 20

仕様

仕様 状況 コメント
Unknown
GeneratorFunction の定義
標準 初期定義
ECMAScript Latest Draft (ECMA-262)
GeneratorFunction の定義
ドラフト  

ブラウザ実装状況

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応 あり あり26 なし あり ?
prototype あり あり26 なし あり ?
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 あり あり ?26 ? ? あり
prototype あり あり ?26 ? ? あり

関連情報

ドキュメントのタグと貢献者

このページの貢献者: Uemmra3, vyv03354, shide55, SphinxKnight
最終更新者: Uemmra3,