GeneratorFunctionコンストラクタ

GeneratorFunctionコンストラクタは、Functionコンストラクタと同様に動的(実行時)にジェネレータ関数を定義できる。

const 関数本体のコード = `let i = 0
while(true){
  yield ++i
}
`
// GeneratorFunctionコンストラクタは用意されていないので、手動で作る。
const GeneratorFunction = Object.getPrototypeOf(function*() {}).constructor
// GeneratorFunctionコンストラクタの最後の引数に関数本体のコード文字列を渡す。
// その前の引数は仮引数名
const ジェネレータ = new GeneratorFunction('引数', '引数2', 関数本体のコード)
let カウンタ = ジェネレータ()
console.log(カウンタ.next().value) // 1
console.log(カウンタ.next().value) // 2