--- title: Object.observe() slug: Web/JavaScript/Reference/Global_Objects/Object/observe tags: - JavaScript - Obsoleto - observe translation_of: Archive/Web/JavaScript/Object.observe ---

{{JSRef}} {{obsolete_header}}

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 depreciada e removida dos navegadores. Você pode utilizar o objeto {{jsxref("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

{{CompatibilityTable}}
Recurso Chrome Firefox (Gecko) Internet Explorer Opera Safari
Suporte Básico {{CompatChrome("36")}} {{CompatNo}} {{CompatNo}} {{CompatOpera("23")}} {{CompatNo}}
Recurso Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Suporte Básico {{CompatNo}} {{CompatChrome("36")}} {{CompatNo}} {{CompatNo}} {{CompatOpera("23")}} {{CompatNo}}

Veja também