GeneratorFunction

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 の定義
ドラフト  

ブラウザ実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
GeneratorFunctionChrome 完全対応 39Edge 完全対応 13Firefox 完全対応 26IE 未対応 なしOpera 完全対応 26Safari 完全対応 10WebView Android 完全対応 39Chrome Android 完全対応 39Firefox Android 完全対応 26Opera Android 完全対応 26Safari iOS 完全対応 10Samsung Internet Android 完全対応 4.0nodejs 完全対応 あり
prototypeChrome 完全対応 39Edge 完全対応 13Firefox 完全対応 26IE 未対応 なしOpera 完全対応 26Safari 完全対応 10WebView Android 完全対応 39Chrome Android 完全対応 39Firefox Android 完全対応 26Opera Android 完全対応 26Safari iOS 完全対応 10Samsung Internet Android 完全対応 4.0nodejs 完全対応 あり

凡例

完全対応  
完全対応
未対応  
未対応

関連情報