MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

Это экспериментальная технология, часть предложения Harmony (ECMAScript 7).
Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.

Сводка

Метод Array.observe() используется для асинхронного обзора изменений в массивах, подобно тому, как метод Object.observe() используется для тех же целей для объектов. Он предоставляет поток изменений в порядке их возникновения.

Синтаксис

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, например, посредством метода 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
Базовая поддержка 36 Нет Нет Нет Нет
Возможность Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базовая поддержка Нет (Да) Нет Нет Нет Нет

Смотрите также

Метки документа и участники

 Внесли вклад в эту страницу: Mingun
 Обновлялась последний раз: Mingun,