object除了数据描述符还有数据读取符。数据符用于描述数据本身的特点。数据读取符用以监控数据的变化。我们通常用set来设置数据,get来过去数据
let obj = {
studuent1:{
name:'aa',
sex:1
},
studuent2:{
name:'bb',
sex:2
},
className:1
}
//由于一个对象中只能写入一个setter,getter,所以,如果要监测所有的数据,要用Objec.definedProperty()来进行转化
function setGetAndSet(obj){
for(let i in obj){
let result = obj[i];
Object.defineProperty(obj,i,{
get(){
console.log('get'+ i + JSON.stringify(result));
return result
},
set(info){
console.log('set'+ i);
result = info;
noticeOut(obj)
}
})
}
console.log('obj',obj)
}
//
function noticeOut(info){
alert(info)
}
setGetAndSet(obj);
//当我们改变第二层的值的时候,不会出发set,无法通知外部,因为目前只监测到第一层
obj.studuent1.name='cc'
//可以弹出alert
obj.className = 2;