基於get 和 set
var a = { watchValue:0 }; var lastTimeValue=a.watchValue; Object.defineProperty(a, 'watchValue', { get: function() { console.log('get:' + watchValue); return watchValue; }, set: function(value) { watchValue = value; if(lastTimeValue!=watchValue){ lastTimeValue=watchValue; console.log('value changed!! set: ' + watchValue); } } });
結果如下:
a.watchValue = 2; // value changed!! set: 2
console.log(a.watchValue);// get:2