この記事は編集レビューを必要としています。ぜひご協力ください。
この翻訳は不完全です。英語から この記事を翻訳 してください。
概要
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.lengthGeneratorFunctionコンストラクタの長さプロパティ。値は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) The definition of 'GeneratorFunction' in that specification. |
Standard | 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) | ? | ? | ? |