2014-12-23 3 views
4

Возможно ли выполнить код при каждом изменении объекта?Наблюдать за изменением объекта

var a = {x: 12, y: 63}; 

a.watch(function() { console.log('The object has changed!'); }); 

a.x = 16; // The object has changed! 
a.y = 1; // The object has changed! 

кажется, будет доступна на Firefox только: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch

Как можно добиться этого в JavaScript/Node.js? (если это возможно, без использования геттер/сеттер метода)

+0

в чистом JavaScript, вы можете установить метод тайм-аут или время интервал для периодической проверки значения объекта. –

+1

Вам не следует использовать часы, но использовать наблюдение, но это все еще предложение ECMAScript7 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe, в настоящее время вы должны иметь возможность делать как [ это] (http://stackoverflow.com/questions/24745424/how-to-detect-if-an-object-variable-has-been-changed) –

+0

@Marcus нет, не будет. – Alnitak

ответ

4

Вы можете использовать Object Observe ... это экспериментальная так с осторожностью ...

var obj = { 
    foo: 0, 
    bar: 1 
}; 

Object.observe(obj, function(changes) { 
    console.log(changes); 
}); 

obj.baz = 2; 
+0

и поддерживается ли в node.js ? – Alnitak

+0

Да, это под флагом '--harmony'. –