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 |