MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Array.observe()

Non-standard
This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

O método Array.observe() é usado para observar mudanças de forma assíncrona em Arrays, de forma similar ao método Object.observe() para objetos. O método fornece um conjunto de mudanças em ordem de ocorrência. É equivalente ao método Object.observe() invocado com a lista aceita ["add", "update", "delete", "splice"].

Sintaxe

Array.observe(arr, callback)

Parâmetros

arr
O array a ser observado.
callback
A função chamado cada vez que ocorrem mudanças, com o seguinte argumento:
changes
Um array de objetos, sendo que cada um representa uma mudança. As propriedades destes objetos são:
  • name: O nome da propriedade que mudou.
  • object: O array modificado depois que a mudança ocorreu.
  • type: Uma string que indica o tipo de mudança que ocorreu. Pode ser "add", "update", "delete", ou "splice".
  • oldValue: Apenas para os tipos "update" e "delete". O valor antes da mudança.
  • index: Apenas para o tipo "splice". O índice no qual ocorreu a mudança.
  • removed: Apenas para o tipo "splice". Um array de elementos removidos.
  • addedCount: Apenas para o tipo "splice". O número de elementos adicionados.

Descrição

A função callback é chamada cada vez que uma mudança é feita em arr, com um array de todas as mudanças na ordem em que elas ocorreram.

Mudanças feitas via métodos de Array, tais como Array.prototype.pop() serão reportados como mudanças do tipo "splice". Mudanças do tipo índice que não alteram o tamanho do array podem ser reportadas como mudanças do tipo "update".

Exemplos

Adicionando diferentes tipos em log

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

Especificações

Strawman proposal specification.

Compatibilidade com Browser

Funcionalidade Chrome Firefox (Gecko) Internet Explorer Opera Safari
Suporte básico 36 Não suportado Não suportado Não suportado Não suportado
Funcionalidade Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Suporte básico Não suportado (Yes) Não suportado Não suportado Não suportado Não suportado

Veja também

Etiquetas do documento e colaboradores

 Colaboradores desta página: jjmars, ralphrass
 Última atualização por: jjmars,