この記事は編集レビューを必要としています。ぜひご協力ください。
この翻訳は不完全です。英語から この記事を翻訳 してください。
概要
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) 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) | ? | ? | ? |