このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

GeneratorFunction

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2016年9月以降、すべてのブラウザーで利用可能です。

GeneratorFunction オブジェクトは、ジェネレーター関数のメソッドを提供します。JavaScript では、すべてのジェネレーター関数は実際には GeneratorFunction オブジェクトです。

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

js
const GeneratorFunction = function* () {}.constructor;

GeneratorFunctionFunction のサブクラスです。

試してみましょう

const GeneratorFunction = function* () {}.constructor;

const foo = new GeneratorFunction(`
  yield 'a';
  yield 'b';
  yield 'c';
`);

let str = "";
for (const val of foo()) {
  str += val;
}

console.log(str);
// 予想される結果: "abc"

コンストラクター

GeneratorFunction()

新しい GeneratorFunction オブジェクトを生成します。

インスタンスプロパティ

親である Function から継承したプロパティもあります

これらのプロパティは GeneratorFunction.prototype で定義されており、すべての GeneratorFunction インスタンスで共有されます。

GeneratorFunction.prototype.constructor

インスタンスオブジェクトを作成するコンストラクター関数です。GeneratorFunction インスタンスの場合、初期値は GeneratorFunction コンストラクターです。

GeneratorFunction.prototype.prototype

すべてジェネレーター関数は、同じ prototype プロパティを共有しており、これは Generator.prototype です。 function* 構文または GeneratorFunction() コンストラクターで生成されたそれぞれのジェネレーター関数も、自身の prototype プロパティを保有しています。このプロパティのプロトタイプは GeneratorFunction.prototype.prototype です。ジェネレーター関数が呼び出されると、その prototype プロパティが返されるジェネレータオブジェクトのプロトタイプとなります。

GeneratorFunction.prototype[Symbol.toStringTag]

[Symbol.toStringTag] プロパティの初期値は文字列 "GeneratorFunction" です。このプロパティは Object.prototype.toString() で使用されています。

これらのプロパティは、それぞれのGeneratorFunctionインスタンスが自分自身で持っているプロパティです。

prototype

関数が new 演算子と共にコンストラクターとして使用される場合に使用されます。新しいオブジェクトのプロトタイプとなります。

インスタンスメソッド

親である Function から継承したメソッドがあります

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-generatorfunction-objects

ブラウザーの互換性

関連情報