MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

概要

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

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

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

構文

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

引数

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

説明

GeneratorFunctionコンストラクタで生成されたgenerator function オブジェクトは 関数が生成されたさいに、パースされます。これは 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

仕様

仕様 状況 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
GeneratorFunction の定義
標準 Initial definition.

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート (有) 26 (26) ? ? ?
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート ? (有) 26 (26) ? ? ?

関連情報

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

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