Obsolete
This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

O método Object.observe() era usado para observações de mudanças, de forma assíncronas de um objeto. Ele fornecia um fluxo de mudanças na ordem em que elas ocorriam. Porém, está API foi deprecada e removida dos navegadores. Você pode utilizar o objeto Proxy como alternativa.

Sintaxe

Object.observe(obj, callback)

Parâmetros

obj
O objeto a ser observado.
callback
A função chamada cada vez que as alterações são feitas, com o seguinte argumento:
changes
Um array de objetos onde cada item representa uma mudança. As propriedades destes objetos de mudança são:
  • name: O nome da propriedade que foi alterada.
  • object: O objeto alterado depois que a mudança foi feita.
  • type: Uma string indicando o tipo de mudança. Pode ser "add", "update", ou "delete".
  • oldValue: Apenas para os tipos "update" e "delete". O valor antes da alteração.
acceptList
A lista dos tipos de alterações a serem observadas no objeto dado para o retorno de chamada dado. Se omitida, o array ["add", "update", "delete", "reconfigure", "setPrototype", "preventExtensions"] será usado.

Retorno

O objeto será retornado.

Descrição

O callback é chamado à cada vez que uma mudança ocorre no obj, com um array contendo todas as mudanças na ordem em que elas ocorreram.

Exemplos

Exemplo: Registrando todos os três tipos diferentes

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 = 'hello';
// [{name: 'foo', object: <obj>, type: 'update', oldValue: 0}]

delete obj.baz;
// [{name: 'baz', object: <obj>, type: 'delete', oldValue: 2}]

Exemplo: Data Binding

// Um modelo chamado "user"
var user = {
  id: 0,
  name: 'Brendan Eich',
  title: 'Mr.'
};

// Criando uma saudação para o user
function updateGreeting() {
  user.greeting = 'Olá, ' + user.title + ' ' + user.name + '!';
}
updateGreeting();

Object.observe(user, function(changes) {
  changes.forEach(function(change) {
    // Sempre que o name e o title mudarem, o updateGreeting será executado
    if (change.name === 'name' || change.name === 'title') {
      updateGreeting();
    }
  });
});

Especificações

Strawman proposal for ECMAScript 7.

Compatibilidade com Navegadores

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Recurso Chrome Firefox (Gecko) Internet Explorer Opera Safari
Suporte Básico 36 Não suportado Não suportado 23 Não suportado
Recurso Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Suporte Básico Não suportado 36 Não suportado Não suportado 23 Não suportado

Veja também

Etiquetas do documento e colaboradores

Etiquetas: 
Colaboradores desta página: valdeirpsr, lvendrame, AlanCezarAraujo
Última atualização por: valdeirpsr,