GeneratorFunction
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
ОбъектGeneratorFunction
предоставляет методы для работы сфункциями-генераторами. В JavaScript каждая функция-генератор фактически является объектомGeneratorFunction
.
Обратите внимание,GeneratorFunction
не является глобальным объектом. Он может быть получен следующим образом:
const GeneratorFunction = function* () {}.constructor;
GeneratorFunction
является подклассомFunction
.
Интерактивный пример
const GeneratorFunction = function* () {}.constructor;const foo = new GeneratorFunction(` yield 'a'; yield 'b'; yield 'c';`);let str = "";for (const val of foo()) { str = str + val;}console.log(str);// Expected output: "abc"
Конструктор
GeneratorFunction()
Создаёт новый объект
GeneratorFunction
.
Свойства экземпляра
Также наследует свойства своего родителяFunction
.
Эти свойства определены вGeneratorFunction.prototype
и есть у всех экземпляровGeneratorFunction
.
GeneratorFunction.prototype.constructor
Функция-конструктор, создающая экземпляр объекта. Для экземпляров
GeneratorFunction
начальным значением является конструкторGeneratorFunction
.GeneratorFunction.prototype.prototype
Все функции-генераторы имеют доступ к общему свойству
prototype
, значением которого являетсяGenerator.prototype
. Каждый экземпляр функции-генератора также имеет собственное свойствоprototype
. При вызове функции-генератора возвращается объект генератора, наследуемый от свойстваprototype
функции-генератора, которая в свою очередь наследуется отGeneratorFunction.prototype.prototype
.GeneratorFunction.prototype[@@toStringTag]
Начальным значением свойства
@@toStringTag
является строка"GeneratorFunction"
. Это свойство используется вObject.prototype.toString()
.
Методы экземпляра
Наследует методы своего родителяFunction
.
Спецификации
Specification |
---|
ECMAScript® 2026 Language Specification # sec-generatorfunction-objects |