--- title: Array.observe() slug: Web/JavaScript/Reference/Global_Objects/Array/observe tags: - Array - ECMAScript7 - Experimental - Expérimental(2) - JavaScript - Method - Reference - Référence(2) translation_of: Archive/Web/JavaScript/Array.observe ---
Метод Array.observe() используется для асинхронного обзора изменений в массивах, подобно тому, как метод {{jsxref("Object.observe()")}} используется для тех же целей для объектов. Он предоставляет поток изменений в порядке их возникновения.
Array.observe(arr, callback)
arrcallbackchangesname: название изменённого свойства.object: изменённый массив, после применения этого изменения.type: строка, указывающая тип произошедшего изменения. Может быть одной из "add", "update", "delete" или "splice".oldValue: только для типов "update" и "delete". Значение до изменения.index: только для типа "splice". Индекс, по которому произошло изменение.removed: только для типа "splice". Массив с удалёнными элементами.addedCount: только для типа "splice". Количество добавленных элементов.Функция callback вызывается каждый раз, когда с массивом arr происходят какие-либо изменения. Параметром в неё передаётся массив со всеми произошедшими изменениями в порядке их возникновения.
Изменения через методы объекта {{jsxref("Array")}}, например, посредством метода {{jsxref("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', 'd'], addedCount: 3}]
Черновое предложение к обсуждению для ECMAScript 7.
| Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Базовая поддержка | {{CompatChrome("36")}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
| Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Базовая поддержка | {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |