本篇文章会介绍两种监听对象数据变化的方法。
一、利用 ES5 的 getter 和 setter
侦听一个对象的属性有无变化时,首先,我们可以通过深拷贝的方法作为数据缓存:
举例:
let obj={
name:''
}
let newObj = JSON.parse(JSON.stringify(obj));
set 时,通过 Object.defineProperty, 把传进来的 val 赋给 newObj 的 name 属性,get 时,把 newObj 里面缓存的值取出。
Object.defineProperty(obj,'name',{
get(){
console.log(newObj.name)
return newObj.name;
},
set(val){
if(val===newObj)return;
console.log('new name is',val);
newObj.name=val;
}
})
obj.name='Fat Trump';
上面这种情况的输出结果为: