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 --- .../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 ------------------- 9 files changed, 828 deletions(-) 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 (limited to 'files/uk/web/javascript/reference/global_objects/object') 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")}}

-
- -

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

- - - -

Див. також

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