diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
commit | a065e04d529da1d847b5062a12c46d916408bf32 (patch) | |
tree | fe0f8bcec1ff39a3c499a2708222dcf15224ff70 /files/uk/web/javascript/reference | |
parent | 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (diff) | |
download | translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.gz translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.bz2 translated-content-a065e04d529da1d847b5062a12c46d916408bf32.zip |
update based on https://github.com/mdn/yari/issues/2028
Diffstat (limited to 'files/uk/web/javascript/reference')
18 files changed, 0 insertions, 1675 deletions
diff --git a/files/uk/web/javascript/reference/functions/arguments/caller/index.html b/files/uk/web/javascript/reference/functions/arguments/caller/index.html deleted file mode 100644 index 3695367816..0000000000 --- a/files/uk/web/javascript/reference/functions/arguments/caller/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: arguments.caller -slug: Web/JavaScript/Reference/Functions/arguments/caller -tags: - - Functions - - JavaScript - - arguments - - Властивість - - застаріла -translation_of: Archive/Web/JavaScript/arguments.caller ---- -<div>{{jsSidebar("Functions")}}</div> - -<p>{{obsolete_header}}</p> - -<p>Застаріла властивість <strong><code>arguments.caller</code></strong> використовувалась, щоб надавати функцію, яка викликала поточну функцію, що виконується. Ця властивість була прибрана та більше не працює.</p> - -<h2 id="Опис">Опис</h2> - -<p>Ця властивість більше недоступна, але ви можете скористатись {{jsxref("Function.caller")}}.</p> - -<pre class="brush: js">function whoCalled() { - if (whoCalled.caller == null) - console.log('Я викликана з глобальної області видимості.'); - else - console.log('Функція ' + whoCalled.caller + ' викликала мене!'); -}</pre> - -<h2 id="Приклади">Приклади</h2> - -<p>Наступний код використовувався для перевірки значення <code>arguments.caller</code> у функції, але він більше не працює.</p> - -<pre class="brush: js example-bad">function whoCalled() { - if (arguments.caller == null) - console.log('Я викликана з глобальної області видимості.'); - else - console.log('Функція ' + arguments.caller + ' викликала мене!'); -} -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<p>Не є частиною жодного стандарту. Реалізована у JavaScript 1.1 та прибрана у {{bug(7224)}} через потенційну вразливість для безпеки.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.functions.arguments.caller")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Function")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/array/observe/index.html b/files/uk/web/javascript/reference/global_objects/array/observe/index.html deleted file mode 100644 index 3e3a386c83..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/observe/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Array.observe() -slug: Web/JavaScript/Reference/Global_Objects/Array/observe -tags: - - JavaScript - - Масив - - застарілий - - метод -translation_of: Archive/Web/JavaScript/Array.observe ---- -<div>{{JSRef}} {{obsolete_header}}</div> - -<p>Метод <strong><code>Array.observe()</code></strong> використовувався для асинхронного спостереження за змінами у масивах, схоже на {{jsxref("Object.observe()")}} у об'єктах. Він надавав послідовність змін в порядку виникнення. Як і <code>Object.observe()</code>, він викликається з допустимим списком типів <code>["add", "update", "delete", "splice"]</code>. Однак, цей API застарілий та був прибраний з переглядачів. Ви можете натомість використати більш загальний об'єкт {{jsxref("Proxy")}}.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox">Array.observe(<var>arr</var>, <var>callback</var>)</pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code>arr</code></dt> - <dd>Масив для спостереження.</dd> - <dt><code>callback</code></dt> - <dd>Функція, яка викликається кожен раз, коли відбуваються зміни, з наступним аргументом: - <dl> - <dt><code>changes</code></dt> - <dd>Масив об'єктів, кожен з яких відображає зміну. Властивості цих об'єктів змін: - <ul> - <li><strong><code>name</code></strong>: Ім'я властивості, яка була змінена.</li> - <li><strong><code>object</code></strong>: Змінений масив після того, як відбулась зміна.</li> - <li><strong><code>type</code></strong>: Строка, що вказує тип зміни. Один з <code>"add"</code>, <code>"update"</code>, <code>"delete"</code>, або <code>"splice"</code>.</li> - <li><strong><code>oldValue</code></strong>: Тільки для типів <code>"update"</code> та <code>"delete"</code>. Значення перед зміною.</li> - <li><strong><code>index</code></strong>: Тільки для типу <code>"splice"</code>. Індекс, за яким відбулася зміна.</li> - <li><strong><code>removed</code></strong>: Тільки для типу <code>"splice"</code>. Масив видалених елементів.</li> - <li><strong><code>addedCount</code></strong>: Тільки для типу <code>"splice"</code>. Кількість доданих елементів.</li> - </ul> - </dd> - </dl> - </dd> -</dl> - -<h2 id="Опис">Опис</h2> - -<p>Функція <code>callback</code> викликається кожен раз, коли у <code>arr</code> відбувається зміна, з масивом усіх змін у порядку, в якому вони відбувались.</p> - -<div class="note"> -<p>Зміни, зроблені методами масивів, такими як <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop"><code>Array.prototype.pop()</code></a>, будуть записані як <code>"splice"</code>. Зміни, пов'язані з призначенням величин за індексом, які не змінюють довжину масиву, можуть бути записані як <code>"update"</code>.</p> -</div> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Логування_різних_типів_змін">Логування різних типів змін</h3> - -<pre class="brush: js">var arr = ['a', 'b', 'c']; - -Array.observe(arr, function(changes) { - console.log(changes); -}); - -arr[1] = 'B'; -// [{type: 'update', object: <arr>, name: '1', oldValue: 'b'}] - -arr[3] = 'd'; -// [{type: 'splice', object: <arr>, index: 3, removed: [], addedCount: 1}] - -arr.splice(1, 2, 'beta', 'gamma', 'delta'); -// [{type: 'splice', object: <arr>, index: 1, removed: ['B', 'c'], addedCount: 3}] -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<p><a href="https://github.com/arv/ecmascript-object-observe">Strawman proposal specification</a>.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Array.observe")}}</p> -</div> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li><a href="//stackoverflow.com/q/29269057/778272">Under what condition would Array.observe's “add” event trigger?</a></li> - <li>{{jsxref("Array.unobserve()")}} {{obsolete_inline}}</li> - <li>{{jsxref("Object.observe()")}} {{obsolete_inline}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/array/unobserve/index.html b/files/uk/web/javascript/reference/global_objects/array/unobserve/index.html deleted file mode 100644 index 308a8a01d6..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/unobserve/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Array.unobserve() -slug: Web/JavaScript/Reference/Global_Objects/Array/unobserve -tags: - - Array - - JavaScript - - Масив - - застарілий - - метод -translation_of: Archive/Web/JavaScript/Array.unobserve ---- -<div>{{JSRef}} {{obsolete_header}}</div> - -<p>Метод Array<strong>.unobserve()</strong> використовувався для видалення спостерігачів, встановлених методом {{jsxref("Array.observe()")}}, але він застарів та був прибраний з переглядачів. Ви можете натомість скористатись більш загальним об'єктом {{jsxref("Proxy")}}.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox">Array.unobserve(<var>arr</var>, <var>callback</var>)</pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code>arr</code></dt> - <dd>Масив, де треба припинити спостереження.</dd> - <dt><code>callback</code></dt> - <dd>Посилання на спостерігач, який треба припинити викликати кожен раз, коли у масиві <strong>arr</strong> відбувається зміна.</dd> -</dl> - -<h2 id="Опис">Опис</h2> - -<p>Метод <code>Array.unobserve()</code> має викликатися після {{jsxref("Array.observe()")}}, щоб прибрати спостерігач з масиву.</p> - -<p>Параметр callback має бути посиланням на функцію, а не анонімною функцією, бо це посилання буде використано, щоб прибрати попередній спостерігач. Немає сенсу викликати <strong>Array.unobserve()</strong> з анонімною функцією зворотного виклику, вона не прибере жоден спостерігач.</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Припинення_спостереження_за_масивом">Припинення спостереження за масивом</h3> - -<pre class="brush: js">var arr = [1, 2, 3]; - -var observer = function(changes) { - console.log(changes); -} - -Array.observe(arr, observer); - -arr.push(4); -// [{type: "splice", object: <arr>, index: 3, removed:[], addedCount: 1}] - -Array.unobserve(arr, observer); - -arr.pop(); -// Функція зворотного виклику не викликалась</pre> - -<h3 id="Використання_анонімної_функції">Використання анонімної функції</h3> - -<pre class="brush: js">var persons = ['Халід', 'Ахмед', 'Мухаммед']; - -Array.observe(persons, function (changes) { - console.log(changes); -}); - -persons.shift(); -// [{type: "splice", object: <arr>, index: 0, removed: [ "Халід" ], addedCount: 0 }] - -Array.unobserve(persons, function (changes) { - console.log(changes); -}); - -persons.push('Абдулла'); -// [{type: "splice", object: <arr>, index: 2, removed: [], addedCount: 1 }] -// Функція зворотного виклику викликатиметься завжди -</pre> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Array.unobserve")}}</p> -</div> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Array.observe()")}} {{obsolete_inline}}</li> - <li>{{jsxref("Object.observe()")}} {{obsolete_inline}}</li> - <li>{{jsxref("Object.unobserve()")}} {{obsolete_inline}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/function/arity/index.html b/files/uk/web/javascript/reference/global_objects/function/arity/index.html deleted file mode 100644 index bef46fef72..0000000000 --- a/files/uk/web/javascript/reference/global_objects/function/arity/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Function.arity -slug: Web/JavaScript/Reference/Global_Objects/Function/arity -tags: - - JavaScript - - Властивість - - Функція - - застаріла -translation_of: Archive/Web/JavaScript/Function.arity ---- -<div>{{JSRef}}{{Obsolete_Header}}</div> - -<p class="note">Властивість <code><strong>arity</strong></code> повертала кількість аргументів, очікуваних функцією, однак, вона більше не існує та була замінена властивістю {{jsxref("Function.prototype.length")}}.</p> - -<h2 id="Специфікації">Специфікації</h2> - -<p>Реалізовано JavaScript 1.2. Застаріла у JavaScript 1.4.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Function.arity")}}</p> -</div> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{JSxRef("Function.prototype.length")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/function/isgenerator/index.html b/files/uk/web/javascript/reference/global_objects/function/isgenerator/index.html deleted file mode 100644 index 65c42052c7..0000000000 --- a/files/uk/web/javascript/reference/global_objects/function/isgenerator/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Function.prototype.isGenerator() -slug: Web/JavaScript/Reference/Global_Objects/Function/isGenerator -tags: - - Function - - JavaScript - - застарілий - - метод - - нестандартний -translation_of: Archive/Web/JavaScript/Function.isGenerator ---- -<div>{{JSRef}} {{non-standard_header}}</div> - -<p>Нестандартний метод <code><strong>isGenerator()</strong></code> використовувався для визначення, чи є функція <a href="/uk/docs/Web/JavaScript/Guide/Iterators_and_Generators#Generators.3A_a_better_way_to_build_Iterators">генератором</a>. Він був видалений з Firefox, починаючи з версії 58.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox"><code><var>fun</var>.isGenerator()</code></pre> - -<h3 id="Значення_що_повертається">Значення, що повертається</h3> - -<p>Значення {{jsxref("Boolean")}}, яке вказує, чи є надана функція <a href="/uk/docs/Web/JavaScript/Guide/Iterators_and_Generators#Generators.3A_a_better_way_to_build_Iterators">генератором</a>.</p> - -<h2 id="Опис">Опис</h2> - -<p>Метод <code>isGenerator()</code> визначає, чи є функція <em><code>fun</code></em> <a href="/uk/docs/Web/JavaScript/Guide/Iterators_and_Generators#Generators.3A_a_better_way_to_build_Iterators">генератором</a>. Він був частиною ранніх пропозицій специфікації Harmony, але не був включений у специфікацію ECMAScript 2015.</p> - -<h2 id="Приклади">Приклади</h2> - -<pre class="brush: js">function f() {} - -function* g() { - yield 42; -} - -console.log('f.isGenerator() = ' + f.isGenerator()); // f.isGenerator() = false -console.log('g.isGenerator() = ' + g.isGenerator()); // g.isGenerator() = true -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<p>Не є частиною жодних специфікацій. Реалізований у JavaScript 1.8.6.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Function.isGenerator")}}</p> -</div> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li><a href="/uk/docs/Web/JavaScript/Guide/Iterators_and_Generators">Ітератори та генератори</a></li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/object/count/index.html b/files/uk/web/javascript/reference/global_objects/object/count/index.html deleted file mode 100644 index 67940e270a..0000000000 --- a/files/uk/web/javascript/reference/global_objects/object/count/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Object.prototype.__count__ -slug: Web/JavaScript/Reference/Global_Objects/Object/count -tags: - - JavaScript - - Object - - Властивість - - застаріла - - нестандартна -translation_of: Archive/Web/JavaScript/Object.count ---- -<div>{{JSRef}}{{Non-standard_Header}}{{obsolete_header("gecko2")}}</div> - -<p>Властивість <strong><code>__count__</code></strong> містила кількість перелічуваних властивостей об'єкта, але була прибрана.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox"><var>obj</var>.__count__</pre> - -<h2 id="Приклади">Приклади</h2> - -<pre class="brush: js">{ 1: 1 }.__count__ // 1 -[].__count__ // 0 -[1].__count__ // 1 -[1, /* hole */, 2, 3].__count__ // 3 -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<p>Не є частиною жодних специфікацій.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Object.count")}}</p> -</div> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li><a class="external" href="http://whereswalden.com/2010/04/06/more-changes-coming-to-spidermonkey-the-magical-__count__-property-of-objects-is-being-removed/">[Blog post] More changes coming to SpiderMonkey: the magical __count__ property is being removed</a></li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/object/eval/index.html b/files/uk/web/javascript/reference/global_objects/object/eval/index.html deleted file mode 100644 index 19a476dfc1..0000000000 --- a/files/uk/web/javascript/reference/global_objects/object/eval/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Object.prototype.eval() -slug: Web/JavaScript/Reference/Global_Objects/Object/eval -tags: - - JavaScript - - Об'єкт - - застарілий - - метод -translation_of: Archive/Web/JavaScript/Object.eval ---- -<div>{{JSRef}} {{obsolete_header}}</div> - -<p>Метод <code><strong>Object.eval()</strong></code> обчислював рядок коду JavaScript у контексті об'єкта, але цей метод застарів та був прибраний.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox"><var>obj</var>.eval(<var>string</var>)</pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code>string</code></dt> - <dd>Будь-який рядок, що відображає вираз, інструкцію чи послідовність інструкцій JavaScript. Вираз може містити змінні та властивості існуючих об'єктів.</dd> -</dl> - -<h2 id="Опис">Опис</h2> - -<p>Метод <code>eval</code> більше не може використовуватись в якості методу об'єкта. Використовуйте замість нього глобальну функцію {{jsxref("Global_Objects/eval", "eval()")}}.</p> - -<h2 id="Специфікації">Специфікації</h2> - -<p>Не є частиною жодних специфікацій.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Object.eval")}}</p> -</div> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Global_Objects/eval", "eval()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/object/getnotifier/index.html b/files/uk/web/javascript/reference/global_objects/object/getnotifier/index.html deleted file mode 100644 index 9fef482fd6..0000000000 --- a/files/uk/web/javascript/reference/global_objects/object/getnotifier/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Object.getNotifier() -slug: Web/JavaScript/Reference/Global_Objects/Object/getNotifier -tags: - - JavaScript - - Об'єкт - - застарілий - - метод -translation_of: Archive/Web/JavaScript/Object.getNotifier ---- -<div>{{JSRef}} {{obsolete_header}}</div> - -<p>Метод <strong><code>Object.getNotifer()</code></strong> використовувався для створення об'єкта, який дозволяв штучно викликати зміну, але застарів та був прибраний з переглядачів.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox">Object.getNotifier(<em>obj</em>)</pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code>obj</code></dt> - <dd>Об'єкт, для якого потрібно отримати сповіщувач.</dd> -</dl> - -<h3 id="Значення_що_повертається">Значення, що повертається</h3> - -<p>Об'єкт-сповіщувач, пов'язаний з об'єктом, переданим у функцію.</p> - -<h2 id="Опис">Опис</h2> - -<p>Сповіщувач використовувався для запуску штучних змін, за якими спостерігатиме <code>Object.observe()</code>.</p> - -<h2 id="Специфікації">Специфікації</h2> - -<p><a href="https://github.com/arv/ecmascript-object-observe">Strawman proposal specification.</a></p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Object.getNotifier")}}</p> -</div> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Object.observe()")}} {{obsolete_inline}}</li> - <li>{{jsxref("Object.unobserve()")}} {{obsolete_inline}}</li> - <li>{{jsxref("Array.observe()")}} {{obsolete_inline}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/object/nosuchmethod/index.html b/files/uk/web/javascript/reference/global_objects/object/nosuchmethod/index.html deleted file mode 100644 index fbd98cf2e2..0000000000 --- a/files/uk/web/javascript/reference/global_objects/object/nosuchmethod/index.html +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: Object.prototype.__noSuchMethod__ -slug: Web/JavaScript/Reference/Global_Objects/Object/noSuchMethod -tags: - - JavaScript - - Object - - Властивість - - застаріла - - нестандартна -translation_of: Archive/Web/JavaScript/Object.noSuchMethod ---- -<div>{{JSRef}}{{Non-standard_Header}}{{Obsolete_Header("gecko43")}}</div> - -<p>Властивість <strong><code>__noSuchMethod__</code></strong> використовувалась для посилання на функцію, що мала виконатися, коли на об'єкті викликався неіснуючий метод, але ця функція більше не доступна.</p> - -<p>В той час як метод <code><strong>__noSuchMethod__</strong></code> був прибраний, специфікація ECMAScript 2015 містить об'єкт {{JSxRef("Proxy")}}, який допоможе досягти описаного нижче (і навіть більше).</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox"><code><var>obj</var>.__noSuchMethod__ = <var>fun</var></code></pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code>fun</code></dt> - <dd>Функція, що має вигляд</dd> - <dd> - <pre class="brush: js"><code>function (<var>id</var>, <var>args</var>) { . . . }</code></pre> - - <dl> - <dt><code>id</code></dt> - <dd>Ім'я неіснуючого методу, що був викликаний</dd> - <dt><code>args</code></dt> - <dd>Масив аргументів, переданих у метод</dd> - </dl> - </dd> -</dl> - -<h2 id="Опис">Опис</h2> - -<p>За замовчуванням спроба викликати метод, який не існує, на об'єкті призводить до викидання {{JSxRef("TypeError")}}. Цю поведінку можна обійти, визначивши функцію у властивості об'єкта <code>__noSuchMethod__</code>. Функція приймає два аргумента, перший - це ім'я метода, що викликається, другий - це масив аргументів, які передаються під час виклику. Другий аргумент є справжнім масивом (тобто, він успадковується через ланцюг {{JSxRef("Array.prototype")}}), а не подібним до масиву <a href="/uk/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments" title="JavaScript/Reference/Functions/arguments">об'єктом arguments</a>.</p> - -<p>Якщо цей метод не можна викликати, чи тому що він дорівнює <code>undefined</code>, чи був видалений, чи йому вручну було присвоєне нефункціональне значення, рушій JavaScript повернеться до викидання <code>TypeError</code>.</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Проста_перевірка___noSuchMethod__">Проста перевірка <code>__noSuchMethod__</code></h3> - -<pre class="brush: js">var o = { - __noSuchMethod__: function(id, args) { - console.log(id, '(' + args.join(', ') + ')'); - } -}; - -o.foo(1, 2, 3); -o.bar(4, 5); -o.baz(); - -// Виведе -// foo (1, 2, 3) -// bar (4, 5) -// baz () -</pre> - -<h3 id="Використання___noSuchMethod___для_імітації_множинного_спадкування">Використання <code>__noSuchMethod__</code> для імітації множинного спадкування</h3> - -<p>Приклад коду, що реалізує примітивну форму множинного спадкування, наведений нижче.</p> - -<pre class="brush: js">// Не працює, якщо батьківські об'єкти є результатом множинного спадкування -function noMethod(name, args) { - var parents = this.__parents_; - - // Пройти через усі батьківські об'єкти - for (var i = 0; i < parents.length; i++) { - // Якщо знаходимо функцію у батьківського об'єкта, викликаємо її - if (typeof parents[i][name] == 'function') { - return parents[i][name].apply(this, args); - } - } - - // Якщо ми дістались сюди, метод не був знайдений - throw new TypeError; -} - -// Додавало батьківський об'єкт для множинного спадкування -function addParent(obj, parent) { - // Якщо об'єкт неініціалізований, ініціалізуємо його - if (!obj.__parents_) { - obj.__parents_ = []; - obj.__noSuchMethod__ = noMethod; - } - - // Додати батьківський об'єкт - obj.__parents_.push(parent); -} -</pre> - -<p>Приклад використання цієї ідеї наведений нижче.</p> - -<pre class="brush: js">// Базовий клас 1 -function NamedThing(name) { - this.name = name; -} - -NamedThing.prototype = { - getName: function() { return this.name; }, - setName: function(newName) { this.name = newName; } -} - -// Базовий клас 2 -function AgedThing(age) { - this.age = age; -} - -AgedThing.prototype = { - getAge: function() { return this.age; }, - setAge: function(age) { this.age = age; } -} - -// Дочірній клас. Наслідується від NamedThing та AgedThing, -// а також визначає адресу -function Person(name, age, address){ - addParent(this, NamedThing.prototype); - NamedThing.call(this, name); - addParent(this, AgedThing.prototype); - AgedThing.call(this, age); - this.address = address; -} - -Person.prototype = { - getAddr: function() { return this.address; }, - setAddr: function(addr) { this.address = addr; } -} - -var bob = new Person('Боб', 25, 'Нью-Йорк'); - -console.log('getAge ' + (('getAge' in bob) ? 'належить' : 'не належить') + ' Бобу'); -// getAge не належить Бобу - -console.log("Вік Боба: " + bob.getAge()); -// Вік Боба: 25 - -console.log('getName ' + (('getName' in bob) ? 'належить' : 'не належить') + ' Бобу'); -// getName не належить Бобу - -console.log("Ім'я Боба: " + bob.getName()); -// Ім'я Боба: Боб - -console.log('getAddr ' + (('getAddr' in bob) ? 'належить' : 'не належить') + ' Бобу'); -// getAddr належить Бобу - -console.log("Адреса Боба: " + bob.getAddr()); -// Адреса Боба: Нью-Йорк -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<p>Не є частиною жодних специфікацій. Ця функціональність була прибрана, дивіться {{bug(683218)}}.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Object.noSuchMethod")}}</p> -</div> diff --git a/files/uk/web/javascript/reference/global_objects/object/observe/index.html b/files/uk/web/javascript/reference/global_objects/object/observe/index.html deleted file mode 100644 index ec4d1ca5e8..0000000000 --- a/files/uk/web/javascript/reference/global_objects/object/observe/index.html +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: Object.observe() -slug: Web/JavaScript/Reference/Global_Objects/Object/observe -tags: - - JavaScript - - Об'єкт - - застарілий - - метод -translation_of: Archive/Web/JavaScript/Object.observe ---- -<div>{{JSRef}} {{obsolete_header}}</div> - -<p>Метод <strong><code>Object.observe()</code></strong> використовувався для асинхронного спостереження за змінами у об'єкті. Він надавав послідовність змін у порядку виникнення. Однак, цей API застарілий та був прибраний з переглядачів. Ви можете, натомість, скористатись більш загальним об'єктом {{jsxref("Proxy")}}.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox">Object.observe(<var>obj</var>, <var>callback</var>[, <var>acceptList</var>])</pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code>obj</code></dt> - <dd>Об'єкт для спостереження.</dd> - <dt><code>callback</code></dt> - <dd>Функція, яка викликається кожен раз, коли відбуваються зміни, з наступним аргументом: - <dl> - <dt><code>changes</code></dt> - <dd>Масив об'єктів, кожен з яких відображає зміну. Властивості цих об'єктів змін: - <ul> - <li><strong><code>name</code></strong>: Ім'я властивості, яка була змінена.</li> - <li><strong><code>object</code></strong>: Змінений об'єкт після того, як відбулася зміна.</li> - <li><strong><code>type</code></strong>: Строка, що вказує тип зміни. Один з <code>"add"</code>, <code>"update"</code> або <code>"delete"</code>.</li> - <li><strong><code>oldValue</code></strong>: Тільки для типів <code>"update"</code> та <code>"delete"</code>. Значення перед зміною.</li> - </ul> - </dd> - </dl> - </dd> - <dt><code>acceptList</code></dt> - <dd>Список типів змін для спостереження на наданому об'єкті для наданої функції <code>callback</code>. Якщо не заданий, буде використаний масив <code>["add", "update", "delete", "reconfigure", "setPrototype", "preventExtensions"]</code>.</dd> -</dl> - -<h3 id="Значення_що_повертається">Значення, що повертається</h3> - -<p>Об'єкт для спостереження.</p> - -<h2 id="Опис">Опис</h2> - -<p>Функція <code>callback</code> викликається кожен раз, коли у <code>obj</code> відбувається зміна, з масивом усіх змін у порядку, в якому вони відбувались.</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Логування_усіх_шістьох_типів">Логування усіх шістьох типів</h3> - -<pre class="brush: js">var obj = { - foo: 0, - bar: 1 -}; - -Object.observe(obj, function(changes) { - console.log(changes); -}); - -obj.baz = 2; -// [{name: 'baz', object: <obj>, type: 'add'}] - -obj.foo = 'привіт'; -// [{name: 'foo', object: <obj>, type: 'update', oldValue: 0}] - -delete obj.baz; -// [{name: 'baz', object: <obj>, type: 'delete', oldValue: 2}] - -Object.defineProperty(obj, 'foo', {writable: false}); -// [{name: 'foo', object: <obj>, type: 'reconfigure'}] - -Object.setPrototypeOf(obj, {}); -// [{name: '__proto__', object: <obj>, type: 'setPrototype', oldValue: <prototype>}] - -Object.seal(obj); -// [ -// {name: 'foo', object: <obj>, type: 'reconfigure'}, -// {name: 'bar', object: <obj>, type: 'reconfigure'}, -// {object: <obj>, type: 'preventExtensions'} -// ] -</pre> - -<h3 id="Звязування_даних">Зв'язування даних</h3> - -<pre class="brush: js">// Модель користувача -var user = { - id: 0, - name: 'Брендан Айк', - title: 'п.' -}; - -// Створити привітання для користувача -function updateGreeting() { - user.greeting = 'Вітаю, ' + user.title + ' ' + user.name + '!'; -} -updateGreeting(); - -Object.observe(user, function(changes) { - changes.forEach(function(change) { - // Кожен раз, коли змінюється ім'я чи титул, оновити привітання - if (change.name === 'name' || change.name === 'title') { - updateGreeting(); - } - }); -}); -</pre> - -<h3 id="Користувацький_тип_зміни">Користувацький тип зміни</h3> - -<pre class="brush: js">// Точка на 2-вимірній площині -var point = {x: 0, y: 0, distance: 0}; - -function setPosition(pt, x, y) { - // Виконуємо користувацьку зміну - Object.getNotifier(pt).performChange('reposition', function() { - var oldDistance = pt.distance; - pt.x = x; - pt.y = y; - pt.distance = Math.sqrt(x * x + y * y); - return {oldDistance: oldDistance}; - }); -} - -Object.observe(point, function(changes) { - console.log('Зміна відстані: ' + (point.distance - changes[0].oldDistance)); -}, ['reposition']); - -setPosition(point, 3, 4); -// Зміна відстані: 5 -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<p><a href="https://github.com/arv/ecmascript-object-observe">Strawman proposal specification</a>.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Object.observe")}}</p> -</div> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Object.unobserve()")}} {{obsolete_inline}}</li> - <li>{{jsxref("Array.observe()")}} {{obsolete_inline}}</li> - <li><a href="https://esdiscuss.org/topic/an-update-on-object-observe">Прибирання Object.Observer</a></li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/object/parent/index.html b/files/uk/web/javascript/reference/global_objects/object/parent/index.html deleted file mode 100644 index 03a5568469..0000000000 --- a/files/uk/web/javascript/reference/global_objects/object/parent/index.html +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Object.prototype.__parent__ -slug: Web/JavaScript/Reference/Global_Objects/Object/Parent -tags: - - JavaScript - - Object - - Властивість - - застаріла - - нестандартна -translation_of: Archive/Web/JavaScript/Object.parent ---- -<div>{{JSRef}}{{Non-standard_Header}}{{Obsolete_Header("gecko2")}}</div> - -<p>Властивість <strong><code>__parent__</code></strong> вказувала на контекст об'єкта, але була прибрана.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox"><var>obj</var>.__parent__</pre> - -<h2 id="Опис">Опис</h2> - -<p>Для об'єктів верхнього рівня це, наприклад, window.</p> - -<h2 id="Специфікації">Специфікації</h2> - -<p>Не є частиною жодних специфікацій.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Object.parent")}}</p> -</div> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li><a class="external" href="http://whereswalden.com/2010/05/07/spidermonkey-change-du-jour-the-special-__parent__-property-has-been-removed/">SpiderMonkey change du jour: the special __parent__ property has been removed</a></li> - <li><a href="/uk/docs/Components.utils.getGlobalForObject">Components.utils.getGlobalForObject</a></li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/object/unobserve/index.html b/files/uk/web/javascript/reference/global_objects/object/unobserve/index.html deleted file mode 100644 index 678544cabe..0000000000 --- a/files/uk/web/javascript/reference/global_objects/object/unobserve/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Object.unobserve() -slug: Web/JavaScript/Reference/Global_Objects/Object/unobserve -tags: - - JavaScript - - Об'єкт - - застарілий - - метод -translation_of: Archive/Web/JavaScript/Object.unobserve ---- -<div>{{JSRef}} {{obsolete_header}}</div> - -<p>Метод <strong><code>Object.unobserve()</code></strong> використовувався для видалення спостерігачів, встановлених методом {{jsxref("Object.observe()")}}, але він застарів та був прибраний з переглядачів. Ви можете натомість скористатись більш загальним об'єктом {{jsxref("Proxy")}}.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox">Object.unobserve(<var>obj</var>, <var>callback</var>)</pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code>obj</code></dt> - <dd>Об'єкт, за яким треба припинити спостереження.</dd> - <dt><code>callback</code></dt> - <dd>Посилання на спостерігач, який треба припинити викликати кожен раз, коли у об'єкті <strong>obj</strong> відбувається зміна.</dd> -</dl> - -<h3 id="Значення_що_повертається">Значення, що повертається</h3> - -<p>Вказаний об'єкт.</p> - -<h2 id="Опис">Опис</h2> - -<p><code>Object.unobserve()</code> має викликатися після {{jsxref("Object.observe()")}}, щоб прибрати з об'єкта спостерігач.</p> - -<p>Параметр callback має бути посиланням на функцію, а не анонімною функцією, бо це посилання буде використано, щоб прибрати попередній спостерігач. Немає сенсу викликати <strong>Object.unobserve() </strong>з анонімною функцією зворотного виклику, вона не прибере жоден спостерігач.</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Припинення_спостереження_за_обєктом">Припинення спостереження за об'єктом</h3> - -<pre class="brush: js">var obj = { - foo: 0, - bar: 1 -}; - -var observer = function(changes) { - console.log(changes); -} - -Object.observe(obj, observer); - -obj.newProperty = 2; -// [{name: 'newProperty', object: <obj>, type: 'add'}] - -Object.unobserve(obj, observer); - -obj.foo = 1; -// Функція зворотного виклику не викликалась</pre> - -<h3 id="Використання_анонімної_функції">Використання анонімної функції</h3> - -<pre class="brush: js">var person = { - name: 'Ахмед', - age: 25 -}; - -Object.observe(person, function(changes) { - console.log(changes); -}); - -person.age = 40; -// [{name: 'age', object: <obj>, oldValue: 25, type: 'update'}] - -Object.unobserve(person, function(changes) { - console.log(changes); -}); - -person.age = 63; -// [{name: 'age', object: <obj>, oldValue: 40, type: 'update'}] -// Функція зворотного виклику викликатиметься завжди -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<p><a href="https://github.com/arv/ecmascript-object-observe">Strawman proposal specification</a>.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Object.unobserve")}}</p> -</div> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Object.observe()")}} {{obsolete_inline}}</li> - <li>{{jsxref("Array.observe()")}} {{obsolete_inline}}</li> - <li>{{jsxref("Array.unobserve()")}} {{obsolete_inline}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/object/unwatch/index.html b/files/uk/web/javascript/reference/global_objects/object/unwatch/index.html deleted file mode 100644 index 7ad4d67028..0000000000 --- a/files/uk/web/javascript/reference/global_objects/object/unwatch/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Object.prototype.unwatch() -slug: Web/JavaScript/Reference/Global_Objects/Object/unwatch -tags: - - JavaScript - - Об'єкт - - застарілий - - метод - - налагодження -translation_of: Archive/Web/JavaScript/Object.unwatch ---- -<div>{{JSRef}}</div> - -<div class="warning"> -<p><strong>Застереження:</strong> Не використовуйте <code>unwatch()</code> та {{jsxref("Object.prototype.watch", "watch()")}}! Ці два методи були реалізовані лише у Firefox до 58-ї версії, вони <strong>застаріли та були прибрані у Firefox 58+</strong>. До того ж, використання точок спостереження має серйозний негативний вплив на продуктивність, особливо при використанні на глобальних об'єктах, таких як <code>window</code>. Звісно, ви можете, натомість, використовувати <a href="/uk/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters">сетери та гетери</a> або <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Proxy">проксі</a>.</p> -</div> - -<p>Метод <code><strong>unwatch()</strong></code> прибирає точку спостереження, встановлену методом {{jsxref("Object.prototype.watch", "watch()")}}.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox"><code><var>obj</var>.unwatch(<var>prop</var>)</code></pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code>prop</code></dt> - <dd>Ім'я властивості об'єкта, за якою треба припинити спостереження.</dd> -</dl> - -<h3 id="Значення_що_повертається">Значення, що повертається</h3> - -<p>{{jsxref("undefined")}}.</p> - -<h2 id="Опис">Опис</h2> - -<p>Налагоджувач JavaScript має функціональність, схожу на ту, що надає даний метод, а також інші налагоджувальні можливості. Інформацію щодо налагоджувача дивіться у статті <a href="/uk/docs/Venkman">Venkman</a>.</p> - -<p>За замовчуванням, цей метод успадковується кожним об'єктом, похідним від {{jsxref("Object")}}.</p> - -<div class="note"> -<p><strong>Заувага:</strong> Причина, з якої <code>unwatch()</code> приймає властивість <em>prop</em> єдиним параметром, в тому, що метод {{jsxref("Object.watch", "watch()")}} допускає лише один обробник.</p> -</div> - -<h2 id="Приклади">Приклади</h2> - -<p>Дивіться {{jsxref("Object.watch", "watch()")}}.</p> - -<h2 id="Специфікації">Специфікації</h2> - -<p>Не є частиною жодних специфікацій. Реалізований у JavaScript 1.2.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Object.unwatch")}}</p> -</div> - -<h2 id="Примітки_щодо_сумісності">Примітки щодо сумісності</h2> - -<ul> - <li>Виклик <code>unwatch()</code> на об'єктах {{domxref("Document")}} викидає помилку {{jsxref("TypeError")}}, починаючи з Firefox 23 ({{bug(903332)}}). Це було виправлено у Firefox 27.</li> -</ul> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Object.watch()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/object/watch/index.html b/files/uk/web/javascript/reference/global_objects/object/watch/index.html deleted file mode 100644 index 9f5536aa6e..0000000000 --- a/files/uk/web/javascript/reference/global_objects/object/watch/index.html +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: Object.prototype.watch() -slug: Web/JavaScript/Reference/Global_Objects/Object/watch -tags: - - JavaScript - - Об'єкт - - застарілий - - метод - - налагодження -translation_of: Archive/Web/JavaScript/Object.watch ---- -<div>{{JSRef}}</div> - -<div class="warning"> -<p><strong>Застереження:</strong> Не використовуйте <code>watch()</code> та {{jsxref("Object.prototype.unwatch", "unwatch()")}}! Ці два методи були реалізовані лише у Firefox до 58-ї версії, вони <strong>застаріли та були прибрані у Firefox 58+</strong>. До того ж, використання точок спостереження має серйозний негативний вплив на продуктивність, особливо при використанні на глобальних об'єктах, таких як <code>window</code>. Звісно, ви можете, натомість, використовувати <a href="/uk/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters">сетери та гетери</a> або <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Proxy">проксі</a>.</p> -</div> - -<p>Метод <code><strong>watch()</strong></code> стежить за присвоєнням властивості значення, та запускає функцію, коли це відбувається.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox"><code><var>obj</var>.watch(<var>prop</var>, <var>handler</var>)</code></pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code>prop</code></dt> - <dd>Ім'я властивості об'єкта, за змінами якої ви бажаєте стежити.</dd> - <dt><code>handler</code></dt> - <dd>Функція, яка викликатиметься, коли значення вказаної властивості змінюється.</dd> -</dl> - -<h3 id="Значення_що_повертається">Значення, що повертається</h3> - -<p>{{jsxref("undefined")}}.</p> - -<h2 id="Опис">Опис</h2> - -<p>Стежить за присвоєнням значень властивості <code>prop</code> у даному об'єкті, викликає <code>handler(prop, oldval, newval)</code>, коли присвоюється значення <code>prop</code>, та зберігає повернене значення у цій властивості. Точка спостереження може фільтрувати (або анулювати) присвоєння значення, повертаючи змінене значення <code>newval</code> (або повертаючи значення <code>oldval</code>).</p> - -<p>Якщо ви видалите властивість, для якої встановлено точку спостереження, ця точка спостереження не зникає. Якщо ви пізніше заново створите властивість, точка спостереження продовжить діяти.</p> - -<p>Щоб видалити точку спостереження, скористайтесь методом {{jsxref("Object.unwatch", "unwatch()")}}. За замовчуванням, метод <code>watch</code> успадковується кожним об'єктом, похідним від {{jsxref("Object")}}.</p> - -<p>Налагоджувач JavaScript має функціональність, схожу на ту, що надає даний метод, а також інші налагоджувальні можливості. Інформацію щодо налагоджувача дивіться у статті <a href="/uk/docs/Venkman">Venkman</a>.</p> - -<p>У Firefox <code>handler</code> викликається тільки з присвоєнь у скрипті, а не з нативного коду. Для прикладу, <code>window.watch('location', myHandler)</code> не викличе <code>myHandler</code>, якщо користувач натисне на посилання на закладку в активному документі. Однак, <code>window.location += '#myAnchor'</code> викличе <code>myHandler</code>.</p> - -<div class="note"> -<p><strong>Заувага:</strong> Виклик <code>watch()</code> на об'єкті для вказаної властивості перезаписує будь-який попередній обробник, призначений цій властивості.</p> -</div> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Використання_watch_та_unwatch">Використання <code>watch</code> та <code>unwatch</code></h3> - -<pre class="brush: js">var o = { p: 1 }; - -o.watch('p', function (id, oldval, newval) { - console.log('Значення o.' + id + ' було змінене з ' + oldval + ' на ' + newval); - return newval; -}); - -o.p = 2; -o.p = 3; -delete o.p; -o.p = 4; - -o.unwatch('p'); -o.p = 5; -</pre> - -<p>Цей скрипт виведе наступне:</p> - -<pre>Значення o.p було змінене з 1 на 2 -Значення o.p було змінене з 2 на 3 -Значення o.p було змінене з undefined на 4 -</pre> - -<h3 id="Використання_watch_для_перевірки_властивостей_обєкта">Використання <code>watch</code> для перевірки властивостей об'єкта</h3> - -<p>Ви можете використати <code>watch</code>, щоб перевірити будь-які присвоєння значень властивостям об'єкта. Даний приклад перевіряє, що кожна людина (Person) завжди матиме дійсне ім'я (name) та вік (age) між 0 та 200.</p> - -<pre class="brush: js">Person = function(name, age) { - this.watch('age', Person.prototype._isValidAssignment); - this.watch('name', Person.prototype._isValidAssignment); - this.name = name; - this.age = age; -}; - -Person.prototype.toString = function() { - return this.name + ', ' + this.age; -}; - -Person.prototype._isValidAssignment = function(id, oldval, newval) { - if (id === 'name' && (!newval || newval.length > 30)) { - throw new RangeError("помилкове ім'я для: " + this); - } - if (id === 'age' && (newval < 0 || newval > 200)) { - throw new RangeError('помилковий вік для: ' + this); - } - return newval; -} - -will = new Person('Вілл', 29); -console.log(will); // Вілл, 29 - -try { - will.name = ''; -} catch (e) { - console.log(e); -} - -try { - will.age = -4; -} catch (e) { - console.log(e); -} -</pre> - -<p>Цей скрипт виведе наступне:</p> - -<pre>Вілл, 29 -RangeError: помилкове ім'я для: Вілл, 29 -RangeError: помилковий вік для: Вілл, 29 -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<p>Не є частиною жодних специфікацій. Реалізований у JavaScript 1.2.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Object.watch")}}</p> -</div> - -<h2 id="Примітки_щодо_сумісності">Примітки щодо сумісності</h2> - -<ul> - <li>Цей <a class="external link-https" href="https://gist.github.com/384583">Поліфіл</a> надає метод <code>watch</code> для усіх переглядачів, що сумісні з ES5.</li> - <li>Використання {{jsxref("Proxy")}} дозволяє робити навіть більш глибокі зміни у роботі з присвоєнням властивостей.</li> - <li>Виклик <code>watch()</code> на об'єкті {{domxref("Document")}} викидає помилку {{jsxref("TypeError")}}, починаючи з Firefox 23 ({{bug(903332)}}). Це було виправлено у Firefox 27.</li> -</ul> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Object.unwatch()")}}</li> - <li>{{jsxref("Object.observe()")}} {{obsolete_inline}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/global_objects/string/quote/index.html b/files/uk/web/javascript/reference/global_objects/string/quote/index.html deleted file mode 100644 index 95ee484e6d..0000000000 --- a/files/uk/web/javascript/reference/global_objects/string/quote/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: String.prototype.quote() -slug: Web/JavaScript/Reference/Global_Objects/String/quote -tags: - - JavaScript - - String - - застарілий - - метод -translation_of: Archive/Web/JavaScript/String.quote ---- -<div>{{JSRef}} {{obsolete_header("37")}} {{non-standard_header}}</div> - -<p>Нестандартний метод <strong><code>quote()</code></strong> повертає копію рядка, замінюючи різноманітні спеціальні символи їхнім екрануванням та загортає результат у подвійні лапки (<code>"</code>).</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox"><code><var>str</var>.quote()</code></pre> - -<h3 id="Значення_що_повертається">Значення, що повертається</h3> - -<p>Новий рядок, що відображає початковий рядок у подвійних лапках, з екрануванням будь-яких спеціальних символів.</p> - -<h2 id="Приклади">Приклади</h2> - -<p>У наведеній нижче таблиці метод <code>quote()</code> замінює будь-які спеціальні символи та загортає рядки у подвійні лапки. Також зверніть увагу на третю колонку, де загорнутий метод {{jsxref("Global_Objects/eval", "eval()")}} знову обчислює екрановані символи.</p> - -<table class="fullwidth-table"> - <thead> - <tr> - <th class="header" scope="col"><code>str</code></th> - <th class="header" scope="col"><code>str.quote()</code></th> - <th class="header" scope="col"><code>eval(str.quote())</code></th> - </tr> - </thead> - <tbody> - <tr> - <td><code>Hello world!</code></td> - <td><code>"Hello world!"</code></td> - <td><code>Hello world!</code></td> - </tr> - <tr> - <td><code style="white-space: pre;">Hello<br> - world!</code></td> - <td><code>"Hello\n\tworld!"</code></td> - <td><code style="white-space: pre;">Hello<br> - world!</code></td> - </tr> - <tr> - <td><code>" \ — '</code></td> - <td><code>"\" \\ \u2014 '"</code></td> - <td><code>" \ — '</code></td> - </tr> - </tbody> -</table> - -<h2 id="Специфікації">Специфікації</h2> - -<p>Не є частиною жодного стандарту. Реалізований у JavaScript 1.3.</p> - -<h2 id="Поліфіл">Поліфіл</h2> - -<pre class="syntaxbox"><code>if (!String.prototype.quote) - String.prototype.quote = function(){ - return JSON.stringify( this ); // починаючи з IE8 -</code> }</pre> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - -<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> - -<p>{{Compat("javascript.builtins.String.quote")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("JSON.stringify()")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/operators/array_comprehensions/index.html b/files/uk/web/javascript/reference/operators/array_comprehensions/index.html deleted file mode 100644 index ebd2425ae2..0000000000 --- a/files/uk/web/javascript/reference/operators/array_comprehensions/index.html +++ /dev/null @@ -1,198 +0,0 @@ ---- -title: Заповнення масивів -slug: Web/JavaScript/Reference/Operators/Array_comprehensions -tags: - - JavaScript - - Оператор - - застарілий - - нестандартний -translation_of: Archive/Web/JavaScript/Array_comprehensions ---- -<div>{{jsSidebar("Operators")}} -<div class="warning"><strong>Нестандартний. Не використовуйте!</strong><br> -Синтаксис заповнення масивів є нестандартним та був прибраний, починаючи з Firefox 58. Для варіантів використання в майбутьому розгляньте {{jsxref("Array.prototype.map")}}, {{jsxref("Array.prototype.filter")}}, {{jsxref("Functions/Стрілкові_функції", "стрілкові функції", "", 1)}} та {{jsxref("Operators/Spread_syntax", "оператор розпакування", "", 1)}}.</div> -{{Obsolete_Header(58)}}</div> - -<p>Синтаксис <strong>заповнення масивів</strong> (array comprehension) був виразом JavaScript, який дозволяв швидко збирати новий масив, базуючись на вже існуючому масиві. Однак, він був прибраний зі стандарту та з реалізації Firefox. Не використовуйте його!</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox">[for (x of iterable) x] -[for (x of iterable) if (condition) x] -[for (x of iterable) for (y of iterable) x + y] -</pre> - -<h2 id="Опис">Опис</h2> - -<p>У заповненнях масивів дозволені наступні два види компонентів:</p> - -<ul> - <li>{{jsxref("Statements/for...of", "for...of")}} та</li> - <li>{{jsxref("Statements/if...else", "if")}}</li> -</ul> - -<p>Перебір for-of завжди є першим компонентом. Можна використовувати більше одного перебору for-of чи if-конструкцій.</p> - -<p>Заповнення масивів були попередньо запропоновані для стандартизації у ECMAScript 2016, вони надають корисне скорочення запису для конструювання нового масиву на основі змісту іншого масиву. Заповнення часто можуть використовуватись замість викликів {{jsxref("Array.prototype.map", "map()")}} та {{jsxref("Array.prototype.filter", "filter()")}}, або як засіб їх об'єднати.</p> - -<p>Наступне заповнення бере масив чисел та створює новий масив, де кожне з цих чисел подвоюється.</p> - -<pre class="brush: js">var numbers = [1, 2, 3, 4]; -var doubled = [for (i of numbers) i * 2]; -console.log(doubled); // виводить 2,4,6,8 -</pre> - -<p>Це еквівалентно наступній операції {{jsxref("Array.prototype.map", "map()")}}:</p> - -<pre class="brush: js">var doubled = numbers.map(i => i * 2); -</pre> - -<p>Заповнення також можуть використовуватись для відбору елементів, які відповідають певному виразу. Ось заповнення, яке обирає лише парні числа:</p> - -<pre class="brush: js">var numbers = [1, 2, 3, 21, 22, 30]; -var evens = [for (i of numbers) if (i % 2 === 0) i]; -console.log(evens); // виводить 2,22,30 -</pre> - -<p>Метод {{jsxref("Array.prototype.filter", "filter()")}} може використовуватись для тієї ж самої мети:</p> - -<pre class="brush: js">var evens = numbers.filter(i => i % 2 === 0); -</pre> - -<p>Операції з {{jsxref("Array.prototype.map", "map()")}} та {{jsxref("Array.prototype.filter", "filter()")}} можна об'єднати у єдине заповнення масиву. Ось таке, що відфільтровує лише парні числа, а потім створює масив, де вони подвоєні:</p> - -<pre class="brush: js">var numbers = [1, 2, 3, 21, 22, 30]; -var doubledEvens = [for (i of numbers) if (i % 2 === 0) i * 2]; -console.log(doubledEvens); // виводить 4,44,60 -</pre> - -<p>Квадратні дужки заповнення масиву створюють неявний блок для області видимості. Нові змінні (такі, як i у прикладі) поводяться так, ніби вони були оголошені за допомогою {{jsxref("Statements/let","let")}}. Це означає, що вони не будуть доступні за межами заповнення.</p> - -<p>Вхідні дані для заповнення масиву не обов'язково самі мають бути масивом; <a href="/uk/docs/Web/JavaScript/Guide/Iterators_and_Generators" title="en-US/docs/JavaScript/Guide/Iterators and Generators">ітератори та генератори</a> також підійдуть.</p> - -<p>Навіть рядки можна використовувати як вхідні дані; щоб виконати наведені вище функції filter та map (на подібних до масиву об'єктах):</p> - -<pre class="brush: js">var str = 'abcdef'; -var consonantsOnlyStr = [for (c of str) if (!(/[aeiouAEIOU]/).test(c)) c].join(''); // 'bcdf' -var interpolatedZeros = [for (c of str) c + '0' ].join(''); // 'a0b0c0d0e0f0' -</pre> - -<p>Знову ж таки, початкова форма не зберігається, тому нам доведеться скористатись методом {{jsxref("Array.prototype.join", "join()")}}, щоб повернутись до рядка.</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Прості_заповнення_масивів">Прості заповнення масивів</h3> - -<pre class="brush:js">[for (i of [1, 2, 3]) i * i ]; -// [1, 4, 9] - -var abc = ['А', 'Б', 'В']; -[for (letters of abc) letters.toLowerCase()]; -// ["а", "б", "в"]</pre> - -<h3 id="Заповнення_масивів_з_оператором_if">Заповнення масивів з оператором if</h3> - -<pre class="brush: js">var years = [1954, 1974, 1990, 2006, 2010, 2014]; -[for (year of years) if (year > 2000) year]; -// [2006, 2010, 2014] -[for (year of years) if (year > 2000) if (year < 2010) year]; -// [2006], те саме, що й нижче: -[for (year of years) if (year > 2000 && year < 2010) year]; -// [2006] -</pre> - -<h3 id="Заповнення_масивів_у_порівнянні_з_map_та_filter">Заповнення масивів у порівнянні з <code>map</code> та <code>filter</code></h3> - -<p>Легко зрозуміти синтаксис заповнення масивів, порівнявши його з методами масиву {{jsxref("Array.map", "map")}} та {{jsxref("Array.filter", "filter")}}:</p> - -<pre class="brush: js">var numbers = [1, 2, 3]; - -numbers.map(function (i) { return i * i }); -numbers.map(i => i * i); -[for (i of numbers) i * i]; -// усі дорівнюють [1, 4, 9] - -numbers.filter(function (i) { return i < 3 }); -numbers.filter(i => i < 3); -[for (i of numbers) if (i < 3) i]; -// усі дорівнюють [1, 2] -</pre> - -<h3 id="Заповнення_масивів_з_двома_масивами">Заповнення масивів з двома масивами</h3> - -<p>Використання двох переборів for-of для роботи з двома масивами:</p> - -<pre class="brush: js">var numbers = [1, 2, 3]; -var letters = ['а', 'б', 'в']; - -var cross = [for (i of numbers) for (j of letters) i + j]; -// ["1а", "1б", "1в", "2а", "2б", "2в", "3а", "3б", "3в"] - -var grid = [for (i of numbers) [for (j of letters) i + j]]; -// [ -// ["1а", "1б", "1в"], -// ["2а", "2б", "2в"], -// ["3а", "3б", "3в"] -// ] - -[for (i of numbers) if (i > 1) for (j of letters) if(j > 'а') i + j] -// ["2б", "2в", "3б", "3в"], те саме, що й наведене нижче: - -[for (i of numbers) for (j of letters) if (i > 1) if(j > 'а') i + j] -// ["2б", "2в", "3б", "3в"] - -[for (i of numbers) if (i > 1) [for (j of letters) if(j > 'а') i + j]] -// [["2б", "2в"], ["3б", "3в"]], не те саме, що наведене нижче: - -[for (i of numbers) [for (j of letters) if (i > 1) if(j > 'а') i + j]] -// [[], ["2б", "2в"], ["3б", "3в"]] -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<p>Початково синтаксис був присутній у чорнетці ECMAScript 2015, але був видалений у ревізії 27 (серпень 2014). Будь ласка, дивіться семантику специфікації у старших ревізіях ES2015.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.operators.array_comprehensions")}}</p> - -<h2 id="Відмінності_від_заповнень_у_JS1.7JS1.8">Відмінності від заповнень у JS1.7/JS1.8</h2> - -<div class="warning">Заповнення JS1.7/JS1.8 були прибрані з Gecko, починаючи з версії 46 ({{bug(1220564)}}).</div> - -<p><strong>Старий синтаксис заповнень (більше не використовується!):</strong></p> - -<pre class="brush: js example-bad">[X for (Y in Z)] -[X for each (Y in Z)] -[X for (Y of Z)] -</pre> - -<p>Відмінності:</p> - -<ul> - <li>Заповнення ESNext створюють область видимості для кожного блоку "for", а не для всього заповнення. - <ul> - <li>Старе: <code>[()=>x for (x of [0, 1, 2])][1]() // 2</code></li> - <li>Нове: <code>[for (x of [0, 1, 2]) ()=>x][1]() // 1, кожна ітерація створює свіже зв'язування для x. </code></li> - </ul> - </li> - <li>Заповнення ESNext починаються з "for", а не з виразу присвоювання. - <ul> - <li>Старе: <code>[i * 2 for (i of numbers)]</code></li> - <li>Нове: <code>[for (i of numbers) i * 2]</code></li> - </ul> - </li> - <li>Заповнення ESNext можуть мати декілька компонентів <code>if</code> та <code>for</code>.</li> - <li>Заповнення ESNext працюють тільки з переборами <code>{{jsxref("Statements/for...of", "for...of")}}</code>, а не з <code>{{jsxref("Statements/for...in", "for...in")}}</code>.</li> -</ul> - -<p>Дивіться пропозиції щодо змін у коді у <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1220564#c42">Bug 1220564, коментар 42</a>.</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Statements/for...of", "for...of")}}</li> - <li>{{jsxref("Operators/Generator_comprehensions", "Заповнення генераторів", "" ,1)}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/operators/expression_closures/index.html b/files/uk/web/javascript/reference/operators/expression_closures/index.html deleted file mode 100644 index e3a0bff185..0000000000 --- a/files/uk/web/javascript/reference/operators/expression_closures/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Вирази-замикання -slug: Web/JavaScript/Reference/Operators/Expression_closures -tags: - - Function - - JavaScript - - Оператор - - застарілий - - нестандартний -translation_of: Archive/Web/JavaScript/Expression_closures ---- -<div>{{JSSidebar("Operators")}}{{Non-standard_Header}}{{Obsolete_Header("gecko60")}} -<div class="warning"><strong>Нестандартний. Не використовуйте!</strong><br> -Синтаксис виразів-замикань є нерекомендованою особливою функціональністю Firefox, він був прибраний, починаючи з Firefox 60. Для використання у майбутньому розгляньте <a href="/uk/docs/Web/JavaScript/Reference/Functions/Стрілкові_функції">стрілкові функції</a>.</div> -</div> - -<p>Вирази-замикання - це скорочений синтаксис для написання простих функцій.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox">function [<em>name</em>]([<em>param1</em>[, <em>param2[</em>, ..., <em>paramN</em>]]]) - <em>expression</em> -</pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code>name</code></dt> - <dd>Ім'я функції. Можна пропустити, в цьому випадку функція буде <em>анонімною</em>. Ім'я доступне лише всередині тіла функції.</dd> - <dt><code>paramN</code></dt> - <dd>Ім'я аргумента, що передається у функцію. Функція може мати до 255 аргументів.</dd> - <dt><code>expression</code></dt> - <dd>Вираз, який складає тіло функції.</dd> -</dl> - -<h2 id="Опис">Опис</h2> - -<p>Це доповнення є не більше, ніж скороченим синтаксисом для написання простих функцій, надаючи мові щось схоже на типову <a class="external" href="https://uk.wikipedia.org/wiki/%D0%9B%D1%8F%D0%BC%D0%B1%D0%B4%D0%B0-%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F">нотацію лямбда-числення</a>.</p> - -<p>JavaScript 1.7 та старші:</p> - -<pre class="brush: js">function(x) { return x * x; }</pre> - -<p>JavaScript 1.8:</p> - -<pre class="brush: js">function(x) x * x</pre> - -<p>Цей синтаксис дозволяє не писати фігурні дужки та оператор 'return' - вони стають неявними. Такий запис не надає жодної іншої переваги в написанні коду, окрім синтаксично коротшого запису.</p> - -<h2 id="Приклади">Приклади</h2> - -<p>Скорочений запис для зв'язування прослуховувачів подій:</p> - -<pre class="brush: js"> document.addEventListener('click', function() false, true); -</pre> - -<p>Використання цієї нотації з деякими функціями масивів з JavaScript 1.6:</p> - -<pre class="brush: js">elems.some(function(elem) elem.type == 'text'); -</pre> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.operators.expression_closures")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{JSxRef("Functions", "Функції")}}</li> - <li>{{JSxRef("Function")}}</li> - <li>{{JSxRef("Statements/function", "оператор function")}}</li> - <li>{{JSxRef("Operators/function", "функціональний вираз")}}</li> - <li>{{JSxRef("Statements/function*", "оператор function*")}}</li> - <li>{{JSxRef("Operators/function*", "вираз function*")}}</li> - <li>{{JSxRef("GeneratorFunction")}}</li> -</ul> diff --git a/files/uk/web/javascript/reference/operators/generator_comprehensions/index.html b/files/uk/web/javascript/reference/operators/generator_comprehensions/index.html deleted file mode 100644 index 30d8a0f6d7..0000000000 --- a/files/uk/web/javascript/reference/operators/generator_comprehensions/index.html +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: Заповнення генераторів -slug: Web/JavaScript/Reference/Operators/Generator_comprehensions -tags: - - JavaScript - - Ітератор - - застарілий - - нестандартний -translation_of: Archive/Web/JavaScript/Generator_comprehensions ---- -<div>{{JSSidebar("Operators")}}{{Non-standard_Header}}{{Obsolete_Header("gecko58")}} -<div class="blockIndicator warning"> -<p><strong>Нестандартний. Не використовуйте!</strong><br> - Синтаксис заповнень генераторів є нестандартним та був прибраний, починаючи з Firefox 58. Для використання в майбутньому розгляньте {{JSxRef("Statements/function*", "генератори", "", 1)}}.</p> -</div> -</div> - -<p>Синтаксис <strong>заповнення генераторів </strong>(generator comprehension) був виразом JavaScript, який дозволяв швидко збирати нову функцію-генератор, базуючись на вже існуючому ітерабельному об'єкті. Однак, він був прибраний зі стандарту та з реалізації Firefox. Не використовуйте його!</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox">(for (x of iterable) x) -(for (x of iterable) if (condition) x) -(for (x of iterable) for (y of iterable) x + y) -</pre> - -<h2 id="Опис">Опис</h2> - -<p>У заповненнях генераторів дозволені наступні два види компонентів:</p> - -<ul> - <li>{{JSxRef("Statements/for...of", "for...of")}} та</li> - <li>{{JSxRef("Statements/if...else", "if")}}</li> -</ul> - -<p>Перебір <code>for-of</code> завжди є першим компонентом. Можна використовувати більше одного перебору <code>for-of</code> чи if-конструкцій.</p> - -<p>Значним недоліком {{JSxRef("Operators/Array_comprehensions","заповнень масивів","","true")}} є те, що вони можуть спричинити конструювання у пам'яті цілого нового масиву. Коли самі вхідні дані для заповнення є маленьким масивом, затрати пам'яті є незначними — але коли вхідні дані є великим масивом, або затратним (чи взагалі нескінченним) генератором, створення нового масиву може бути проблематичним.</p> - -<p>Генератори дозволяють ліниві обчислення послідовностей, з обчисленням елементів на вимогу, коли є потреба. Заповнення генераторів синтаксично майже ідентичні заповненням масивів — вони використовують круглі дужки замість квадратних — але замість створення масиву вони створюють генератор, який може виконуватися ліниво. Можете вважати їх скороченим синтаксисом для створення генераторів.</p> - -<p>Припустимо, ми маємо ітератор <code>it</code>, який перебирає великі послідовності цілих чисел. Ми бажаємо створити новий ітератор, який перебиратиме їхні подвоєні значення. Заповнення масиву створило б цілий масив у пам'яті, що містив би подвоєні значення:</p> - -<pre class="brush: js">var doubles = [for (i in it) i * 2]; -</pre> - -<p>Заповнення генератора, з іншого боку, створило б новий ітератор, який створював би подвоєні значення на вимогу, в разі потреби:</p> - -<pre class="brush: js">var it2 = (for (i in it) i * 2); -console.log(it2.next()); // Перше значення з it, подвоєне -console.log(it2.next()); // Друге значення з it, подвоєне -</pre> - -<p>Коли заповнення генератора використовується як аргумент функції, круглі дужки, що використовуються для виклику функції, означають, що зовнішні дужки можна пропустити:</p> - -<pre class="brush: js">var result = doSomething(for (i in it) i * 2); -</pre> - -<p>Значною відмінністю між цими двома прикладами є те, що, використовуючи заповнення генератора, ви перебиратимете структуру 'obj' лише один раз, всього, на відміну від одного обходу при заповненні масиву та ще одного під час його перебору.</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Прості_заповнення_генераторів">Прості заповнення генераторів</h3> - -<pre class="brush:js">(for (i of [1, 2, 3]) i * i ); -// функція-генератор, що видає 1, 4 та 9 - -[...(for (i of [1, 2, 3]) i * i )]; -// [1, 4, 9] - -var abc = ['А', 'Б', 'В']; -(for (letters of abc) letters.toLowerCase()); -// функція-генератор, що видає "а", "б" та "в" -</pre> - -<h3 id="Заповнення_генераторів_з_оператором_if">Заповнення генераторів з оператором if</h3> - -<pre class="brush: js">var years = [1954, 1974, 1990, 2006, 2010, 2014]; - -(for (year of years) if (year > 2000) year); -// функція-генератор, що видає 2006, 2010 та 2014 - -(for (year of years) if (year > 2000) if (year < 2010) year); -// функція-генератор, що видає 2006, те саме нижче: - -(for (year of years) if (year > 2000 && year < 2010) year); -// функція-генератор, що видає 2006 -</pre> - -<h3 id="Заповнення_генераторів_у_порівнянні_з_функцією-генератором">Заповнення генераторів у порівнянні з функцією-генератором</h3> - -<p>Легко зрозуміти синтаксис заповнення генераторів, порівнявши його з функцією-генератором.</p> - -<p>Приклад 1: Простий генератор.</p> - -<pre class="brush: js">var numbers = [1, 2, 3]; - -// Функція-генератор -(function*() { - for (let i of numbers) { - yield i * i; - } -})(); - -// Заповнення генератора -(for (i of numbers) i * i ); - -// Результат: Обидва повертають генератор, який видає [1, 4, 9] -</pre> - -<p>Приклад 2: Використання <code>if</code> у генераторі.</p> - -<pre class="brush: js">var numbers = [1, 2, 3]; - -// Функція-генератор -(function*() { - for (let i of numbers) { - if (i < 3) { - yield i * 1; - } - } -})(); - -// Заповнення генератора -(for (i of numbers) if (i < 3) i); - -// Результат: обидва вертають генератор, який видає [1, 2]</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<p>Заповнення генераторів було початково присутнє у чорнетці ECMAScript 2015, але було прибране у ревізії 27 (серпень 2014). Будь-ласка, дивіться семантику специфікації у старших ревізіях ES2015.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.operators.generator_comprehensions")}}</p> - -<h2 id="Відмінності_від_заповнень_у_JS1.7JS1.8">Відмінності від заповнень у JS1.7/JS1.8</h2> - -<div class="blockIndicator warning">Заповнення JS1.7/JS1.8 були прибрані з Gecko 46 ({{bug(1220564)}}).</div> - -<p><strong>Старий синтаксис заповнень (більше не використовується!):</strong></p> - -<pre class="brush: js example-bad">(X for (Y in Z)) -(X for each (Y in Z)) -(X for (Y of Z)) -</pre> - -<p>Відмінності:</p> - -<ul> - <li>Заповнення ES7 створюють область видимості для кожного блоку "for", а не для всього заповнення. - <ul> - <li>Старе: <code>[...(()=>x for (x of [0, 1, 2]))][1]() // 2</code></li> - <li>Нове: <code>[...(for (x of [0, 1, 2]) ()=>x)][1]() // 1, кожна ітерація створює свіже зв'язування для x. </code></li> - </ul> - </li> - <li>Заповнення ES7 починаються з "for", а не з виразу присвоювання. - <ul> - <li>Старе: <code>(i * 2 for (i of numbers))</code></li> - <li>Нове: <code>(for (i of numbers) i * 2)</code></li> - </ul> - </li> - <li>Заповнення ES7 можуть мати декілька компонентів <code>if</code> та <code>for</code>.</li> - <li>Заповнення ES7 працюють тільки з переборами <code>{{JSxRef("Statements/for...of", "for...of")}}</code>, а не з <code>{{JSxRef("Statements/for...in", "for...in")}}</code>.</li> -</ul> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{JSxRef("Statements/for...of", "for...of")}}</li> - <li>{{JSxRef("Operators/Array_comprehensions", "Заповнення масивів")}}</li> -</ul> |