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) //获取值
最后修改:2022 年 05 月 24 日
如果觉得我的文章对你有用,请随意赞赏