From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../global_objects/generatorfunction/index.html | 114 +++++++++++++++++++++ .../generatorfunction/prototype/index.html | 65 ++++++++++++ 2 files changed, 179 insertions(+) create mode 100644 files/uk/web/javascript/reference/global_objects/generatorfunction/index.html create mode 100644 files/uk/web/javascript/reference/global_objects/generatorfunction/prototype/index.html (limited to 'files/uk/web/javascript/reference/global_objects/generatorfunction') diff --git a/files/uk/web/javascript/reference/global_objects/generatorfunction/index.html b/files/uk/web/javascript/reference/global_objects/generatorfunction/index.html new file mode 100644 index 0000000000..cb529b5095 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/generatorfunction/index.html @@ -0,0 +1,114 @@ +--- +title: GeneratorFunction +slug: Web/JavaScript/Reference/Global_Objects/GeneratorFunction +tags: + - ECMAScript 2015 + - GeneratorFunction + - JavaScript + - Ітератор + - Конструктор +translation_of: Web/JavaScript/Reference/Global_Objects/GeneratorFunction +--- +
{{JSRef}}
+ +

Конструктор GeneratorFunction створює новий об'єкт {{jsxref("Statements/function*", "функції-генератора")}}. У JavaScript кожна функція-генератор насправді є об'єктом GeneratorFunction.

+ +

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

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

Синтаксис

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

Параметри

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

Опис

+ +

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

+ +

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

+ +
+

Заувага: {{jsxref("Statements/function*", "функції-генератори")}}, створені конструктором GeneratorFunction, не створюють замикань зі своїм контекстом виконання; вони завжди створюються у глобальній області видимості. Під час виконання вони мають доступ лише до власних локальних змінних та до глобальних, але не до змінних області видимості, в якій був викликаний конструктор GeneratorFunction. Це відрізняється від використання {{jsxref("Global_Objects/eval", "eval")}} з кодом для виразу функції-генератора.

+
+ +

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

+ +

Властивості

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

Прототип GeneratorFunction

+ +

Властивості

+ +
{{page('/uk/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype', 'Властивості')}}
+ +

Екземпляри GeneratorFunction

+ +

Екземпляри GeneratorFunction успадковують методи та властивості від {{jsxref("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
+
+ +

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

+ + + + + + + + + + + + + + + + + + + +
СпецифікаціяСтатусКоментар
{{SpecName('ES2015', '#sec-generatorfunction-objects', 'GeneratorFunction')}}{{Spec2('ES2015')}}Початкове визначення.
{{SpecName('ESDraft', '#sec-generatorfunction-objects', 'GeneratorFunction')}}{{Spec2('ESDraft')}}
+ +

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

+ +
+ + +

{{Compat("javascript.builtins.GeneratorFunction")}}

+
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/global_objects/generatorfunction/prototype/index.html b/files/uk/web/javascript/reference/global_objects/generatorfunction/prototype/index.html new file mode 100644 index 0000000000..8f8fcce4c0 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/generatorfunction/prototype/index.html @@ -0,0 +1,65 @@ +--- +title: GeneratorFunction.prototype +slug: Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype +tags: + - ECMAScript 2015 + - GeneratorFunction + - JavaScript + - Ітератор + - Властивість + - прототип +translation_of: Web/JavaScript/Reference/Global_Objects/GeneratorFunction +--- +
{{JSRef}}
+ +

Властивість GeneratorFunction.prototype відображає прототип {{jsxref("GeneratorFunction")}}.

+ +

Опис

+ +

Об'єкти {{jsxref("GeneratorFunction")}} успадковуються від GeneratorFunction.prototype. GeneratorFunction.prototype не можна змінювати.

+ +

Властивості

+ +
+
GeneratorFunction.constructor
+
Початковим значенням є {{jsxref("GeneratorFunction")}}.
+
GeneratorFunction.prototype.prototype
+
Значення дорівнює %GeneratorPrototype%.
+
+ +

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

+ + + + + + + + + + + + + + + + + + + +
СпецифікаціяСтатусКоментар
{{SpecName('ES2015', '#sec-generatorfunction.prototype', 'GeneratorFunction.prototype')}}{{Spec2('ES2015')}}Початкове визначення.
{{SpecName('ESDraft', '#sec-generatorfunction.prototype', 'GeneratorFunction.prototype')}}{{Spec2('ESDraft')}}
+ +

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

+ +
+ + +

{{Compat("javascript.builtins.GeneratorFunction.prototype")}}

+
+ +

Див. також

+ + -- cgit v1.2.3-54-g00ecf