Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2016年9月.
Generator オブジェクトはジェネレーター関数によって返され、反復可能プロトコルとイテレータープロトコルの両方に準拠しています。
Generator は Iterator クラスのサブクラスです。
Generator コンストラクターに関する JavaScript の実体はありません。Generator のインスタンスはジェネレーター関数から返す必要があります。
ジェネレーター関数によって生成されるすべてのオブジェクトが共有する隠されたプロトタイプオブジェクトだけがあります。このオブジェクトはクラスに見せかけるため Generator.prototype と表記されることが多いですが、GeneratorFunction が実際の JavaScript エンティティであるため、より適切には GeneratorFunction.prototype.prototype と呼ぶべきです。Generatorインスタンスのプロトタイプチェーンを理解するには、GeneratorFunction.prototype.prototype を参照してください。
これらのプロパティは Generator.prototype に定義され、すべての Generator インスタンスで共有されます。
Generator.prototype.constructor作成されたインスタンスオブジェクトのコンストラクター関数です。Generator インスタンスでは、初期値は GeneratorFunction.prototype です。
メモ: Generator オブジェクトは、それ自体を作成したジェネレーター関数への参照を格納しません。
[Symbol.toStringTag] プロパティの初期値であり、文字列 "Generator" です。このプロパティは Object.prototype.toString() で使用されます。
親である Iterator から継承したインスタンスメソッドもあります。
Generator.prototype.next()yield 式で得られた値を返します。
Generator.prototype.return()ジェネレーターの本体内で、現在の停止位置に return 文が挿入されたかのように振る舞い、これによりジェネレーターが完了します。また、try...finally ブロックと組み合わせることで、ジェネレーターがクリーンアップ処理を実行することができるようにします。
Generator.prototype.throw()ジェネレーターの本体において、現在の停止位置に throw 文が挿入されたかのように振る舞います。これによりジェネレーターはエラー状態を認識し、エラーを処理したり、クリーンアップを実行して自身を終了させたりすることができます。
ジェネレーター関数では、値は必要になるまで評価されません。したがってジェネレーターは、潜在的に無限のデータ構造を定義することができます。
| ECMAScript® 2027 Language Specification # sec-generator-objects |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2026年3月2日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.