Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。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 |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。