Testing: Watching via get/set
by andypotanin
JavaScript
console.clear();
var Original = {
name: '',
age: 27,
hash: +new Date
}
var Watched = Object.create( Original, {
modified: {
value: function (key, before, after) { console.log('Changed', key, 'from', before || null, 'to', after || null); }
},
name: {
get: function name() { return Object.getPrototypeOf(this)[arguments.callee.name]; },
set: function name(value) { this.modified( arguments.callee.name, Object.getPrototypeOf(this)[arguments.callee.name], Object.getPrototypeOf(this).name = value ); }
},
hash: {
get: function hash() { return Object.getPrototypeOf(this)[arguments.callee.name]; },
set: function hash(value) { this.modified( arguments.callee.name, Object.getPrototypeOf(this)[arguments.callee.name], Object.getPrototypeOf(this).hash = value ); }
}
});
Watched.name = 'Andy';
Watched.name = 'Andy Potanin';
Watched.name = '';
//setInterval( function() { Watched.hash = +new Date; }, 1000 );
//console.log('name', Original.name);
//console.log('age', Original.age);
//console.log('hash', Original.hash);