Thanks to visit codestin.com
Credit goes to developer.mozilla.org

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

View in English Always switch to English

GeneratorFunction

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨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 から継承したメソッドがあります

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-generatorfunction-objects

ブラウザーの互換性

関連情報