對數據對象的屬性批量劫持設置:javascript
<script type="text/javascript"> function observe(data){ if(!data || typeof data !== 'object'){ return; } Object.keys(data).forEach(function(key){ // value 而不是直接用data[key]: defineProperty時,data[key]會致使死循環 var value = data[key]; observe(value); Object.defineProperty(data,key,{ enumerable: true, configurable: true, get: function() { return value; }, set: function(newVal) { value = newVal; console.log('prop(' + key + ') has been obsered, value: ' + newVal.toString() ); } }); }); } var json = { addr1: { city: '' }, addr2: '' }; observe(json); json.addr1.city = '北京市海淀區'; // prop(city) has been obsered, value: 北京市海淀區 json.addr2 = '上海市外灘'; // prop(addr2) has been obsered, value: 上海市外灘 </script>
後續... ...java