var setGetAndSet = function(obj,key){
var initVlaue = obj[key]
Object.defineProperty(obj,key,{
get:function(){
console.log('get')
return initVlaue
},
set:function(val){
initVlaue = val;
},
})
}
var watch = function(obj){
for(var key in obj){
setGetAndSet(obj,key)
}
}
var obj = {
a:1
};
watch(obj)
Object.defineProperty() 方法设置属性时,属性不能同时声明访问器属性( set 和 get )和 writable 或者 value 属性。 意思就是,某个属性设置了 writable 或者 value 属性,那么这个属性就不能声明 get 和 set 了,反之亦然。