From a065e04d529da1d847b5062a12c46d916408bf32 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 21:46:22 -0500 Subject: update based on https://github.com/mdn/yari/issues/2028 --- .../functions/arguments/caller/index.html | 55 ------ .../global_objects/array/observe/index.html | 89 --------- .../global_objects/array/unobserve/index.html | 89 --------- .../global_objects/function/arity/index.html | 31 ---- .../global_objects/function/isgenerator/index.html | 56 ------ .../global_objects/object/count/index.html | 44 ----- .../global_objects/object/eval/index.html | 46 ----- .../global_objects/object/getnotifier/index.html | 52 ------ .../global_objects/object/nosuchmethod/index.html | 166 ----------------- .../global_objects/object/observe/index.html | 153 ---------------- .../global_objects/object/parent/index.html | 41 ----- .../global_objects/object/unobserve/index.html | 102 ----------- .../global_objects/object/unwatch/index.html | 71 -------- .../global_objects/object/watch/index.html | 153 ---------------- .../global_objects/string/quote/index.html | 77 -------- .../operators/array_comprehensions/index.html | 198 --------------------- .../operators/expression_closures/index.html | 78 -------- .../operators/generator_comprehensions/index.html | 174 ------------------ 18 files changed, 1675 deletions(-) delete mode 100644 files/uk/web/javascript/reference/functions/arguments/caller/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/observe/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/array/unobserve/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/function/arity/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/function/isgenerator/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/object/count/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/object/eval/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/object/getnotifier/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/object/nosuchmethod/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/object/observe/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/object/parent/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/object/unobserve/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/object/unwatch/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/object/watch/index.html delete mode 100644 files/uk/web/javascript/reference/global_objects/string/quote/index.html delete mode 100644 files/uk/web/javascript/reference/operators/array_comprehensions/index.html delete mode 100644 files/uk/web/javascript/reference/operators/expression_closures/index.html delete mode 100644 files/uk/web/javascript/reference/operators/generator_comprehensions/index.html (limited to 'files/uk/web/javascript/reference') 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 ---- -
{{jsSidebar("Functions")}}
- -

{{obsolete_header}}

- -

Застаріла властивість arguments.caller використовувалась, щоб надавати функцію, яка викликала поточну функцію, що виконується. Ця властивість була прибрана та більше не працює.

- -

Опис

- -

Ця властивість більше недоступна, але ви можете скористатись {{jsxref("Function.caller")}}.

- -
function whoCalled() {
-   if (whoCalled.caller == null)
-      console.log('Я викликана з глобальної області видимості.');
-   else
-      console.log('Функція ' + whoCalled.caller + ' викликала мене!');
-}
- -

Приклади

- -

Наступний код використовувався для перевірки значення arguments.caller у функції, але він більше не працює.

- -
function whoCalled() {
-   if (arguments.caller == null)
-      console.log('Я викликана з глобальної області видимості.');
-   else
-      console.log('Функція ' + arguments.caller + ' викликала мене!');
-}
-
- -

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

- -

Не є частиною жодного стандарту. Реалізована у JavaScript 1.1 та прибрана у {{bug(7224)}} через потенційну вразливість для безпеки.

- -

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

- - - -

{{Compat("javascript.functions.arguments.caller")}}

- -

Див. також

- - 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 ---- -
{{JSRef}} {{obsolete_header}}
- -

Метод Array.observe() використовувався для асинхронного спостереження за змінами у масивах, схоже на  {{jsxref("Object.observe()")}} у об'єктах. Він надавав послідовність змін в порядку виникнення. Як і Object.observe(), він викликається з допустимим списком типів ["add", "update", "delete", "splice"]. Однак, цей API застарілий та був прибраний з переглядачів. Ви можете натомість використати більш загальний об'єкт {{jsxref("Proxy")}}.

- -

Синтаксис

- -
Array.observe(arr, callback)
- -

Параметри

- -
-
arr
-
Масив для спостереження.
-
callback
-
Функція, яка викликається кожен раз, коли відбуваються зміни, з наступним аргументом: -
-
changes
-
Масив об'єктів, кожен з яких відображає зміну. Властивості цих об'єктів змін: -
    -
  • name: Ім'я властивості, яка була змінена.
  • -
  • object: Змінений масив після того, як відбулась зміна.
  • -
  • type: Строка, що вказує тип зміни. Один з "add", "update", "delete", або "splice".
  • -
  • oldValue: Тільки для типів "update" та "delete". Значення перед зміною.
  • -
  • index: Тільки для типу "splice". Індекс, за яким відбулася зміна.
  • -
  • removed: Тільки для типу "splice". Масив видалених елементів.
  • -
  • addedCount: Тільки для типу "splice". Кількість доданих елементів.
  • -
-
-
-
-
- -

Опис

- -

Функція callback викликається кожен раз, коли у arr відбувається зміна, з масивом усіх змін у порядку, в якому вони відбувались.

- -
-

Зміни, зроблені методами масивів, такими як Array.prototype.pop(), будуть записані як "splice". Зміни, пов'язані з призначенням величин за індексом, які не змінюють довжину масиву, можуть бути записані як "update".

-
- -

Приклади

- -

Логування різних типів змін

- -
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}]
-
- -

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

- -

Strawman proposal specification.

- -

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

- -
- - -

{{Compat("javascript.builtins.Array.observe")}}

-
- -

Див. також

- - 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 ---- -
{{JSRef}} {{obsolete_header}}
- -

Метод Array.unobserve() використовувався для видалення спостерігачів, встановлених методом {{jsxref("Array.observe()")}}, але він застарів та був прибраний з переглядачів. Ви можете натомість скористатись більш загальним об'єктом {{jsxref("Proxy")}}.

- -

Синтаксис

- -
Array.unobserve(arr, callback)
- -

Параметри

- -
-
arr
-
Масив, де треба припинити спостереження.
-
callback
-
Посилання на спостерігач, який треба припинити викликати кожен раз, коли у масиві arr відбувається зміна.
-
- -

Опис

- -

Метод Array.unobserve() має викликатися після {{jsxref("Array.observe()")}}, щоб прибрати спостерігач з масиву.

- -

Параметр callback має бути посиланням на функцію, а не анонімною функцією, бо це посилання буде використано, щоб прибрати попередній спостерігач. Немає сенсу викликати Array.unobserve() з анонімною функцією зворотного виклику, вона не прибере жоден спостерігач.

- -

Приклади

- -

Припинення спостереження за масивом

- -
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();
-// Функція зворотного виклику не викликалась
- -

Використання анонімної функції

- -
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 }]
-// Функція зворотного виклику викликатиметься завжди
-
- -

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

- -
- - -

{{Compat("javascript.builtins.Array.unobserve")}}

-
- -

Див. також

- - 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 ---- -
{{JSRef}}{{Obsolete_Header}}
- -

Властивість arity повертала кількість аргументів, очікуваних функцією, однак, вона більше не існує та була замінена властивістю {{jsxref("Function.prototype.length")}}.

- -

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

- -

Реалізовано JavaScript 1.2. Застаріла у JavaScript 1.4.

- -

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

- -
- - -

{{Compat("javascript.builtins.Function.arity")}}

-
- -

Див. також

- - 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 ---- -
{{JSRef}} {{non-standard_header}}
- -

Нестандартний метод isGenerator() використовувався для визначення, чи є функція генератором. Він був видалений з Firefox, починаючи з версії 58.

- -

Синтаксис

- -
fun.isGenerator()
- -

Значення, що повертається

- -

Значення {{jsxref("Boolean")}}, яке вказує, чи є надана функція генератором.

- -

Опис

- -

Метод isGenerator() визначає, чи є функція fun генератором. Він був частиною ранніх пропозицій специфікації Harmony, але не був включений у специфікацію ECMAScript 2015.

- -

Приклади

- -
function f() {}
-
-function* g() {
-  yield 42;
-}
-
-console.log('f.isGenerator() = ' + f.isGenerator()); // f.isGenerator() = false
-console.log('g.isGenerator() = ' + g.isGenerator()); // g.isGenerator() = true
-
- -

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

- -

Не є частиною жодних специфікацій. Реалізований у JavaScript 1.8.6.

- -

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

- -
- - -

{{Compat("javascript.builtins.Function.isGenerator")}}

-
- -

Див. також

- - 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 ---- -
{{JSRef}}{{Non-standard_Header}}{{obsolete_header("gecko2")}}
- -

Властивість __count__ містила кількість перелічуваних властивостей об'єкта, але була прибрана.

- -

Синтаксис

- -
obj.__count__
- -

Приклади

- -
{ 1: 1 }.__count__              // 1
-[].__count__                    // 0
-[1].__count__                   // 1
-[1, /* hole */, 2, 3].__count__ // 3
-
- -

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

- -

Не є частиною жодних специфікацій.

- -

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

- -
- - -

{{Compat("javascript.builtins.Object.count")}}

-
- -

Див. також

- - 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 ---- -
{{JSRef}} {{obsolete_header}}
- -

Метод Object.eval() обчислював рядок коду JavaScript у контексті об'єкта, але цей метод застарів та був прибраний.

- -

Синтаксис

- -
obj.eval(string)
- -

Параметри

- -
-
string
-
Будь-який рядок, що відображає вираз, інструкцію чи послідовність інструкцій JavaScript. Вираз може містити змінні та властивості існуючих об'єктів.
-
- -

Опис

- -

Метод eval більше не може використовуватись в якості методу об'єкта. Використовуйте замість нього глобальну функцію {{jsxref("Global_Objects/eval", "eval()")}}.

- -

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

- -

Не є частиною жодних специфікацій.

- -

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

- -
- - -

{{Compat("javascript.builtins.Object.eval")}}

-
- -

Див. також

- - 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 ---- -
{{JSRef}} {{obsolete_header}}
- -

Метод Object.getNotifer() використовувався для створення об'єкта, який дозволяв штучно викликати зміну, але застарів та був прибраний з переглядачів.

- -

Синтаксис

- -
Object.getNotifier(obj)
- -

Параметри

- -
-
obj
-
Об'єкт, для якого потрібно отримати сповіщувач.
-
- -

Значення, що повертається

- -

Об'єкт-сповіщувач, пов'язаний з об'єктом, переданим у функцію.

- -

Опис

- -

Сповіщувач використовувався для запуску штучних змін, за якими спостерігатиме Object.observe().

- -

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

- -

Strawman proposal specification.

- -

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

- -
- - -

{{Compat("javascript.builtins.Object.getNotifier")}}

-
- -

Див. також

- - 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 ---- -
{{JSRef}}{{Non-standard_Header}}{{Obsolete_Header("gecko43")}}
- -

Властивість __noSuchMethod__ використовувалась для посилання на функцію, що мала виконатися, коли на об'єкті викликався неіснуючий метод, але ця функція більше не доступна.

- -

В той час як метод __noSuchMethod__ був прибраний, специфікація ECMAScript 2015 містить об'єкт {{JSxRef("Proxy")}}, який допоможе досягти описаного нижче (і навіть більше).

- -

Синтаксис

- -
obj.__noSuchMethod__ = fun
- -

Параметри

- -
-
fun
-
Функція, що має вигляд
-
-
function (id, args) { . . . }
- -
-
id
-
Ім'я неіснуючого методу, що був викликаний
-
args
-
Масив аргументів, переданих у метод
-
-
-
- -

Опис

- -

За замовчуванням спроба викликати метод, який не існує, на об'єкті призводить до викидання {{JSxRef("TypeError")}}. Цю поведінку можна обійти, визначивши функцію у властивості об'єкта __noSuchMethod__. Функція приймає два аргумента, перший - це ім'я метода, що викликається, другий - це масив аргументів, які передаються під час виклику. Другий аргумент є справжнім масивом (тобто, він успадковується через ланцюг {{JSxRef("Array.prototype")}}), а не подібним до масиву об'єктом arguments.

- -

Якщо цей метод не можна викликати, чи тому що він дорівнює undefined, чи був видалений, чи йому вручну було присвоєне нефункціональне значення, рушій JavaScript повернеться до викидання TypeError.

- -

Приклади

- -

Проста перевірка __noSuchMethod__

- -
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 ()
-
- -

Використання __noSuchMethod__ для імітації множинного спадкування

- -

Приклад коду, що реалізує примітивну форму множинного спадкування, наведений нижче.

- -
// Не працює, якщо батьківські об'єкти є результатом множинного спадкування
-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);
-}
-
- -

Приклад використання цієї ідеї наведений нижче.

- -
// Базовий клас 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());
-// Адреса Боба: Нью-Йорк
-
- -

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

- -

Не є частиною жодних специфікацій. Ця функціональність була прибрана, дивіться {{bug(683218)}}.

- -

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

- -
- - -

{{Compat("javascript.builtins.Object.noSuchMethod")}}

-
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 ---- -
{{JSRef}} {{obsolete_header}}
- -

Метод Object.observe() використовувався для асинхронного спостереження за змінами у об'єкті. Він надавав послідовність змін у порядку виникнення. Однак, цей API застарілий та був прибраний з переглядачів. Ви можете, натомість, скористатись більш загальним об'єктом {{jsxref("Proxy")}}.

- -

Синтаксис

- -
Object.observe(obj, callback[, acceptList])
- -

Параметри

- -
-
obj
-
Об'єкт для спостереження.
-
callback
-
Функція, яка викликається кожен раз, коли відбуваються зміни, з наступним аргументом: -
-
changes
-
Масив об'єктів, кожен з яких відображає зміну. Властивості цих об'єктів змін: -
    -
  • name: Ім'я властивості, яка була змінена.
  • -
  • object: Змінений об'єкт після того, як відбулася зміна.
  • -
  • type: Строка, що вказує тип зміни. Один з "add", "update" або "delete".
  • -
  • oldValue: Тільки для типів "update" та "delete". Значення перед зміною.
  • -
-
-
-
-
acceptList
-
Список типів змін для спостереження на наданому об'єкті для наданої функції callback. Якщо не заданий, буде використаний масив ["add", "update", "delete", "reconfigure", "setPrototype", "preventExtensions"].
-
- -

Значення, що повертається

- -

Об'єкт для спостереження.

- -

Опис

- -

Функція callback викликається кожен раз, коли у obj відбувається зміна, з масивом усіх змін у порядку, в якому вони відбувались.

- -

Приклади

- -

Логування усіх шістьох типів

- -
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'}
-// ]
-
- -

Зв'язування даних

- -
// Модель користувача
-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();
-    }
-  });
-});
-
- -

Користувацький тип зміни

- -
// Точка на 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
-
- -

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

- -

Strawman proposal specification.

- -

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

- -
- - -

{{Compat("javascript.builtins.Object.observe")}}

-
- -

Див. також

- - 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 ---- -
{{JSRef}}{{Non-standard_Header}}{{Obsolete_Header("gecko2")}}
- -

Властивість __parent__ вказувала на контекст об'єкта, але була прибрана.

- -

Синтаксис

- -
obj.__parent__
- -

Опис

- -

Для об'єктів верхнього рівня це, наприклад, window.

- -

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

- -

Не є частиною жодних специфікацій.

- -

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

- -
- - -

{{Compat("javascript.builtins.Object.parent")}}

-
- -

Див. також

- - 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 ---- -
{{JSRef}} {{obsolete_header}}
- -

Метод Object.unobserve() використовувався для видалення спостерігачів, встановлених методом {{jsxref("Object.observe()")}}, але він застарів та був прибраний з переглядачів. Ви можете натомість скористатись більш загальним об'єктом {{jsxref("Proxy")}}.

- -

Синтаксис

- -
Object.unobserve(obj, callback)
- -

Параметри

- -
-
obj
-
Об'єкт, за яким треба припинити спостереження.
-
callback
-
Посилання на спостерігач, який треба припинити викликати кожен раз, коли у об'єкті obj відбувається зміна.
-
- -

Значення, що повертається

- -

Вказаний об'єкт.

- -

Опис

- -

Object.unobserve() має викликатися після {{jsxref("Object.observe()")}}, щоб прибрати з об'єкта спостерігач.

- -

Параметр callback має бути посиланням на функцію, а не анонімною функцією, бо це посилання буде використано, щоб прибрати попередній спостерігач. Немає сенсу викликати Object.unobserve() з анонімною функцією зворотного виклику, вона не прибере жоден спостерігач.

- -

Приклади

- -

Припинення спостереження за об'єктом

- -
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;
-// Функція зворотного виклику не викликалась
- -

Використання анонімної функції

- -
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'}]
-// Функція зворотного виклику викликатиметься завжди
-
- -

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

- -

Strawman proposal specification.

- -

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

- -
- - -

{{Compat("javascript.builtins.Object.unobserve")}}

-
- -

Див. також

- - 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 ---- -
{{JSRef}}
- -
-

Застереження: Не використовуйте unwatch() та {{jsxref("Object.prototype.watch", "watch()")}}! Ці два методи були реалізовані лише у Firefox до 58-ї версії, вони застаріли та були прибрані у Firefox 58+. До того ж, використання точок спостереження має серйозний негативний вплив на продуктивність, особливо при використанні на глобальних об'єктах, таких як window. Звісно, ви можете, натомість, використовувати сетери та гетери або проксі.

-
- -

Метод unwatch() прибирає точку спостереження, встановлену методом {{jsxref("Object.prototype.watch", "watch()")}}.

- -

Синтаксис

- -
obj.unwatch(prop)
- -

Параметри

- -
-
prop
-
Ім'я властивості об'єкта, за якою треба припинити спостереження.
-
- -

Значення, що повертається

- -

{{jsxref("undefined")}}.

- -

Опис

- -

Налагоджувач JavaScript має функціональність, схожу на ту, що надає даний метод, а також інші налагоджувальні можливості. Інформацію щодо налагоджувача дивіться у статті Venkman.

- -

За замовчуванням, цей метод успадковується кожним об'єктом, похідним від {{jsxref("Object")}}.

- -
-

Заувага: Причина, з якої unwatch() приймає властивість prop єдиним параметром, в тому, що метод {{jsxref("Object.watch", "watch()")}} допускає лише один обробник.

-
- -

Приклади

- -

Дивіться {{jsxref("Object.watch", "watch()")}}.

- -

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

- -

Не є частиною жодних специфікацій. Реалізований у JavaScript 1.2.

- -

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

- -
- - -

{{Compat("javascript.builtins.Object.unwatch")}}

-
- -

Примітки щодо сумісності

- - - -

Див. також

- - 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 ---- -
{{JSRef}}
- -
-

Застереження: Не використовуйте watch() та {{jsxref("Object.prototype.unwatch", "unwatch()")}}! Ці два методи були реалізовані лише у Firefox до 58-ї версії, вони застаріли та були прибрані у Firefox 58+. До того ж, використання точок спостереження має серйозний негативний вплив на продуктивність, особливо при використанні на глобальних об'єктах, таких як window. Звісно, ви можете, натомість, використовувати сетери та гетери або проксі.

-
- -

Метод watch() стежить за присвоєнням властивості значення, та запускає функцію, коли це відбувається.

- -

Синтаксис

- -
obj.watch(prop, handler)
- -

Параметри

- -
-
prop
-
Ім'я властивості об'єкта, за змінами якої ви бажаєте стежити.
-
handler
-
Функція, яка викликатиметься, коли значення вказаної властивості змінюється.
-
- -

Значення, що повертається

- -

{{jsxref("undefined")}}.

- -

Опис

- -

Стежить за присвоєнням значень властивості prop у даному об'єкті, викликає handler(prop, oldval, newval), коли присвоюється значення prop, та зберігає повернене значення у цій властивості. Точка спостереження може фільтрувати (або анулювати) присвоєння значення, повертаючи змінене значення newval (або повертаючи значення oldval).

- -

Якщо ви видалите властивість, для якої встановлено точку спостереження, ця точка спостереження не зникає. Якщо ви пізніше заново створите властивість, точка спостереження продовжить діяти.

- -

Щоб видалити точку спостереження, скористайтесь методом {{jsxref("Object.unwatch", "unwatch()")}}. За замовчуванням, метод watch успадковується кожним об'єктом, похідним від {{jsxref("Object")}}.

- -

Налагоджувач JavaScript має функціональність, схожу на ту, що надає даний метод, а також інші налагоджувальні можливості. Інформацію щодо налагоджувача дивіться у статті Venkman.

- -

У Firefox handler викликається тільки з присвоєнь у скрипті, а не з нативного коду. Для прикладу, window.watch('location', myHandler) не викличе myHandler, якщо користувач натисне на посилання на закладку в активному документі. Однак, window.location += '#myAnchor' викличе myHandler.

- -
-

Заувага: Виклик watch() на об'єкті для вказаної властивості перезаписує будь-який попередній обробник, призначений цій властивості.

-
- -

Приклади

- -

Використання watch та unwatch

- -
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;
-
- -

Цей скрипт виведе наступне:

- -
Значення o.p було змінене з 1 на 2
-Значення o.p було змінене з 2 на 3
-Значення o.p було змінене з undefined на 4
-
- -

Використання watch для перевірки властивостей об'єкта

- -

Ви можете використати watch, щоб перевірити будь-які присвоєння значень властивостям об'єкта. Даний приклад перевіряє, що кожна людина (Person) завжди матиме дійсне ім'я (name) та вік (age) між 0 та 200.

- -
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);
-}
-
- -

Цей скрипт виведе наступне:

- -
Вілл, 29
-RangeError: помилкове ім'я для: Вілл, 29
-RangeError: помилковий вік для: Вілл, 29
-
- -

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

- -

Не є частиною жодних специфікацій. Реалізований у JavaScript 1.2.

- -

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

- -
- - -

{{Compat("javascript.builtins.Object.watch")}}

-
- -

Примітки щодо сумісності

- - - -

Див. також

- - 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 ---- -
{{JSRef}} {{obsolete_header("37")}} {{non-standard_header}}
- -

Нестандартний метод quote() повертає копію рядка, замінюючи різноманітні спеціальні символи їхнім екрануванням та загортає результат у подвійні лапки (").

- -

Синтаксис

- -
str.quote()
- -

Значення, що повертається

- -

Новий рядок, що відображає початковий рядок у подвійних лапках, з екрануванням будь-яких спеціальних символів.

- -

Приклади

- -

У наведеній нижче таблиці метод quote() замінює будь-які спеціальні символи та загортає рядки у подвійні лапки. Також зверніть увагу на третю колонку, де загорнутий метод {{jsxref("Global_Objects/eval", "eval()")}} знову обчислює екрановані символи.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
strstr.quote()eval(str.quote())
Hello world!"Hello world!"Hello world!
Hello
- world!
"Hello\n\tworld!"Hello
- world!
" \ — '"\" \\ \u2014 '"" \ — '
- -

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

- -

Не є частиною жодного стандарту. Реалізований у JavaScript 1.3.

- -

Поліфіл

- -
if (!String.prototype.quote)
-    String.prototype.quote = function(){
-        return JSON.stringify( this ); // починаючи з IE8
-    }
- -

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

- - - -

{{Compat("javascript.builtins.String.quote")}}

- -

Див. також

- - 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 ---- -
{{jsSidebar("Operators")}} -
Нестандартний. Не використовуйте!
-Синтаксис заповнення масивів є нестандартним та був прибраний, починаючи з Firefox 58. Для варіантів використання в майбутьому розгляньте {{jsxref("Array.prototype.map")}}, {{jsxref("Array.prototype.filter")}}, {{jsxref("Functions/Стрілкові_функції", "стрілкові функції", "", 1)}} та {{jsxref("Operators/Spread_syntax", "оператор розпакування", "", 1)}}.
-{{Obsolete_Header(58)}}
- -

Синтаксис заповнення масивів (array comprehension) був виразом JavaScript, який дозволяв швидко збирати новий масив, базуючись на вже існуючому масиві. Однак, він був прибраний зі стандарту та з реалізації Firefox. Не використовуйте його!

- -

Синтаксис

- -
[for (x of iterable) x]
-[for (x of iterable) if (condition) x]
-[for (x of iterable) for (y of iterable) x + y]
-
- -

Опис

- -

У заповненнях масивів дозволені наступні два види компонентів:

- - - -

Перебір for-of завжди є першим компонентом. Можна використовувати більше одного перебору for-of чи if-конструкцій.

- -

Заповнення масивів були попередньо запропоновані для стандартизації у ECMAScript 2016, вони надають корисне скорочення запису для конструювання нового масиву на основі змісту іншого масиву. Заповнення часто можуть використовуватись замість викликів {{jsxref("Array.prototype.map", "map()")}} та {{jsxref("Array.prototype.filter", "filter()")}}, або як засіб їх об'єднати.

- -

Наступне заповнення бере масив чисел та створює новий масив, де кожне з цих чисел подвоюється.

- -
var numbers = [1, 2, 3, 4];
-var doubled = [for (i of numbers) i * 2];
-console.log(doubled); // виводить 2,4,6,8
-
- -

Це еквівалентно наступній операції {{jsxref("Array.prototype.map", "map()")}}:

- -
var doubled = numbers.map(i => i * 2);
-
- -

Заповнення також можуть використовуватись для відбору елементів, які відповідають певному виразу. Ось заповнення, яке обирає лише парні числа:

- -
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
-
- -

Метод {{jsxref("Array.prototype.filter", "filter()")}} може використовуватись для тієї ж самої мети:

- -
var evens = numbers.filter(i => i % 2 === 0);
-
- -

Операції з {{jsxref("Array.prototype.map", "map()")}} та {{jsxref("Array.prototype.filter", "filter()")}} можна об'єднати у єдине заповнення масиву. Ось таке, що відфільтровує лише парні числа, а потім створює масив, де вони подвоєні:

- -
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
-
- -

Квадратні дужки заповнення масиву створюють неявний блок для області видимості. Нові змінні (такі, як i у прикладі) поводяться так, ніби вони були оголошені за допомогою {{jsxref("Statements/let","let")}}. Це означає, що вони не будуть доступні за межами заповнення.

- -

Вхідні дані для заповнення масиву не обов'язково самі мають бути масивом; ітератори та генератори також підійдуть.

- -

Навіть рядки можна використовувати як вхідні дані; щоб виконати наведені вище функції filter та map (на подібних до масиву об'єктах):

- -
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'
-
- -

Знову ж таки, початкова форма не зберігається, тому нам доведеться скористатись методом {{jsxref("Array.prototype.join", "join()")}}, щоб повернутись до рядка.

- -

Приклади

- -

Прості заповнення масивів

- -
[for (i of [1, 2, 3]) i * i ];
-// [1, 4, 9]
-
-var abc = ['А', 'Б', 'В'];
-[for (letters of abc) letters.toLowerCase()];
-// ["а", "б", "в"]
- -

Заповнення масивів з оператором if

- -
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]
-
- -

Заповнення масивів у порівнянні з map та filter

- -

Легко зрозуміти синтаксис заповнення масивів, порівнявши його з методами масиву {{jsxref("Array.map", "map")}} та {{jsxref("Array.filter", "filter")}}:

- -
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]
-
- -

Заповнення масивів з двома масивами

- -

Використання двох переборів for-of для роботи з двома масивами:

- -
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в"]]
-
- -

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

- -

Початково синтаксис був присутній у чорнетці ECMAScript 2015, але був видалений у ревізії 27 (серпень 2014). Будь ласка, дивіться семантику специфікації у старших ревізіях ES2015.

- -

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

- - - -

{{Compat("javascript.operators.array_comprehensions")}}

- -

Відмінності від заповнень у JS1.7/JS1.8

- -
Заповнення JS1.7/JS1.8 були прибрані з Gecko, починаючи з версії 46 ({{bug(1220564)}}).
- -

Старий синтаксис заповнень (більше не використовується!):

- -
[X for (Y in Z)]
-[X for each (Y in Z)]
-[X for (Y of Z)]
-
- -

Відмінності:

- - - -

Дивіться пропозиції щодо змін у коді у Bug 1220564, коментар 42.

- -

Див. також

- - 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 ---- -
{{JSSidebar("Operators")}}{{Non-standard_Header}}{{Obsolete_Header("gecko60")}} -
Нестандартний. Не використовуйте!
-Синтаксис виразів-замикань є нерекомендованою особливою функціональністю Firefox, він був прибраний, починаючи з Firefox 60. Для використання у майбутньому розгляньте стрілкові функції.
-
- -

Вирази-замикання - це скорочений синтаксис для написання простих функцій.

- -

Синтаксис

- -
function [name]([param1[, param2[, ..., paramN]]])
-   expression
-
- -

Параметри

- -
-
name
-
Ім'я функції. Можна пропустити, в цьому випадку функція буде анонімною. Ім'я доступне лише всередині тіла функції.
-
paramN
-
Ім'я аргумента, що передається у функцію. Функція може мати до 255 аргументів.
-
expression
-
Вираз, який складає тіло функції.
-
- -

Опис

- -

Це доповнення є не більше, ніж скороченим синтаксисом для написання простих функцій, надаючи мові щось схоже на типову нотацію лямбда-числення.

- -

JavaScript 1.7 та старші:

- -
function(x) { return x * x; }
- -

JavaScript 1.8:

- -
function(x) x * x
- -

Цей синтаксис дозволяє не писати фігурні дужки та оператор 'return' - вони стають неявними. Такий запис не надає жодної іншої переваги в написанні коду, окрім синтаксично коротшого запису.

- -

Приклади

- -

Скорочений запис для зв'язування прослуховувачів подій:

- -
 document.addEventListener('click', function() false, true);
-
- -

Використання цієї нотації з деякими функціями масивів з JavaScript 1.6:

- -
elems.some(function(elem) elem.type == 'text');
-
- -

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

- - - -

{{Compat("javascript.operators.expression_closures")}}

- -

Див. також

- - 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 ---- -
{{JSSidebar("Operators")}}{{Non-standard_Header}}{{Obsolete_Header("gecko58")}} -
-

Нестандартний. Не використовуйте!
- Синтаксис заповнень генераторів є нестандартним та був прибраний, починаючи з Firefox 58. Для використання в майбутньому розгляньте {{JSxRef("Statements/function*", "генератори", "", 1)}}.

-
-
- -

Синтаксис заповнення генераторів (generator comprehension) був виразом JavaScript, який дозволяв швидко збирати нову функцію-генератор, базуючись на вже існуючому ітерабельному об'єкті. Однак, він був прибраний зі стандарту та з реалізації Firefox. Не використовуйте його!

- -

Синтаксис

- -
(for (x of iterable) x)
-(for (x of iterable) if (condition) x)
-(for (x of iterable) for (y of iterable) x + y)
-
- -

Опис

- -

У заповненнях генераторів дозволені наступні два види компонентів:

- - - -

Перебір for-of завжди є першим компонентом. Можна використовувати більше одного перебору for-of чи if-конструкцій.

- -

Значним недоліком {{JSxRef("Operators/Array_comprehensions","заповнень масивів","","true")}} є те, що вони можуть спричинити конструювання у пам'яті цілого нового масиву. Коли самі вхідні дані для заповнення є маленьким масивом, затрати пам'яті є незначними — але коли вхідні дані є великим масивом, або затратним (чи взагалі нескінченним) генератором, створення нового масиву може бути проблематичним.

- -

Генератори дозволяють ліниві обчислення послідовностей, з обчисленням елементів на вимогу, коли є потреба. Заповнення генераторів синтаксично майже ідентичні заповненням масивів — вони використовують круглі дужки замість квадратних — але замість створення масиву вони створюють генератор, який може виконуватися ліниво. Можете вважати їх скороченим синтаксисом для створення генераторів.

- -

Припустимо, ми маємо ітератор it, який перебирає великі послідовності цілих чисел. Ми бажаємо створити новий ітератор, який перебиратиме їхні подвоєні значення. Заповнення масиву створило б цілий масив у пам'яті, що містив би подвоєні значення:

- -
var doubles = [for (i in it) i * 2];
-
- -

Заповнення генератора, з іншого боку, створило б новий ітератор, який створював би подвоєні значення на вимогу, в разі потреби:

- -
var it2 = (for (i in it) i * 2);
-console.log(it2.next()); // Перше значення з it, подвоєне
-console.log(it2.next()); // Друге значення з it, подвоєне
-
- -

Коли заповнення генератора використовується як аргумент функції, круглі дужки, що використовуються для виклику функції, означають, що зовнішні дужки можна пропустити:

- -
var result = doSomething(for (i in it) i * 2);
-
- -

Значною відмінністю між цими двома прикладами є те, що, використовуючи заповнення генератора, ви перебиратимете структуру 'obj' лише один раз, всього, на відміну від одного обходу при заповненні масиву та ще одного під час його перебору.

- -

Приклади

- -

Прості заповнення генераторів

- -
(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());
-// функція-генератор, що видає "а", "б" та "в"
-
- -

Заповнення генераторів з оператором if

- -
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
-
- -

Заповнення генераторів у порівнянні з функцією-генератором

- -

Легко зрозуміти синтаксис заповнення генераторів, порівнявши його з функцією-генератором.

- -

Приклад 1: Простий генератор.

- -
var numbers = [1, 2, 3];
-
-// Функція-генератор
-(function*() {
-  for (let i of numbers) {
-    yield i * i;
-  }
-})();
-
-// Заповнення генератора
-(for (i of numbers) i * i );
-
-// Результат: Обидва повертають генератор, який видає [1, 4, 9]
-
- -

Приклад 2: Використання if у генераторі.

- -
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]
- -

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

- -

Заповнення генераторів було початково присутнє у чорнетці ECMAScript 2015, але було прибране у ревізії 27 (серпень 2014). Будь-ласка, дивіться семантику специфікації у старших ревізіях ES2015.

- -

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

- - - -

{{Compat("javascript.operators.generator_comprehensions")}}

- -

Відмінності від заповнень у JS1.7/JS1.8

- -
Заповнення JS1.7/JS1.8 були прибрані з Gecko 46 ({{bug(1220564)}}).
- -

Старий синтаксис заповнень (більше не використовується!):

- -
(X for (Y in Z))
-(X for each (Y in Z))
-(X for (Y of Z))
-
- -

Відмінності:

- - - -

Див. також

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