let data={
name:'terry'
}
let _this={
}
// 通过使用Object自带的defineProperty方法将data中值赋值给_this
for(let item in data){
Object.defineProperty(_this,item,{
// 获取属性的时候调用该方法
get(){
console.log("get()");
return data[item]
},
// 修改属性的时候调用该方法
set(newValue){
// 不能直接在set中对_this 属性进行修改,可能会造成死循环
// _this.name = newValue;
console.log("set()");
// 可以对data中的数据进行修改,然后get重新获取,就可以修改成功
data[item] = newValue;
}
})
}
console.log(_this.name);
// console.log(_this.name = "ls");
_this.name = "ls"
console.log(_this.name);
数据劫持原理
最新推荐文章于 2023-04-12 22:42:22 发布