GeneratorFunction

Конструктор GeneratorFunction створює новий об'єкт функції-генератора. У JavaScript кожна функція-генератор насправді є об'єктом GeneratorFunction.

Зауважте, що GeneratorFunction не є глобальним об'єктом. Його можна отримати, виконавши наступний код.

Object.getPrototypeOf(function*(){}).constructor

Синтаксис

new GeneratorFunction ([arg1[, arg2[, ...argN]],] functionBody)

Параметри

arg1, arg2, ... argN
Імена, що використовуватиме функція в якості імен формальних аргументів. Кожне повинне бути рядком, що є коректним ідентифікатором JavaScript або списком таких рядків, розділених комою; наприклад, "x", "theValue" або "a,b".
functionBody
Рядок, що містить інструкції JavaScript, які складають визначення функції.

Опис

Об'єкти функцій-генераторів, створені конструктором GeneratorFunction, розбираються, коли створюється функція. Це менш ефективно, ніж оголошення функції-генератора виразом function* та її виклик у вашому коді, тому що такі функції розбираються з рештою коду.

Усі аргументи, передані у функцію, вважаються іменами ідентифікаторів параметрів функції, яка має бути створена, у порядку, в якому вони були передані.

Заувага: функції-генератори, створені конструктором GeneratorFunction, не створюють замикань зі своїм контекстом виконання; вони завжди створюються у глобальній області видимості. Під час виконання вони мають доступ лише до власних локальних змінних та до глобальних, але не до змінних області видимості, в якій був викликаний конструктор GeneratorFunction. Це відрізняється від використання eval з кодом для виразу функції-генератора.

Виклик конструктора GeneratorFunction як функції (без оператора new) має такий самий ефект, як і виклик його як конструктора.

Властивості

GeneratorFunction.length
Властивість довжини конструктора GeneratorFunction, чиє значення дорівнює 1.
GeneratorFunction.prototype
Дозволяє додавати властивості до усіх об'єктів функцій-генераторів.

Прототип GeneratorFunction

Властивості

GeneratorFunction.constructor
Початковим значенням є GeneratorFunction.
GeneratorFunction.prototype.prototype
Значення дорівнює %GeneratorPrototype%.

Екземпляри GeneratorFunction

Екземпляри GeneratorFunction успадковують методи та властивості від GeneratorFunction.prototype. Як в усіх конструкторах, ви можете змінити прототип конструктора, щоб внести зміни до усіх екземплярів GeneratorFunction.

Приклади

Створення функції-генератора від конструктора GeneratorFunction

var GeneratorFunction = Object.getPrototypeOf(function*(){}).constructor
var g = new GeneratorFunction('a', 'yield a * 2');
var iterator = g(10);
console.log(iterator.next().value); // 20

Специфікації

Специфікація Статус Коментар
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'GeneratorFunction' in that specification.
Standard Початкове визначення.
ECMAScript (ECMA-262)
The definition of 'GeneratorFunction' in that specification.
Living Standard

Сумісність з веб-переглядачами

BCD tables only load in the browser

Див. також