vue数据劫持实现
- 描述
vue的数据流本质是单向流动的,即mode->view,而v-model实现数据的双向绑定本质是采用了数据劫持的方式实现的 - 数据劫持实现
//1.模拟组件的this对象
data(){
return{
username:'11',
pwd:'123456'
}
}
let _this={}
//2.利用对象的set和get访问器属性实现数据劫持
for(let item in data){
Object.defineProperty(_this,item,{
get(){
return data[item]
}
set(newValue){
data[item]=newValue
}
})
}
注意:在set访问器属性中不能使用_this.username=item这种方式设置值否则出现死循环
- 使用
_this.username='test' //赋值
console.log(_this.username) //获取值