<script>
function Vue(options){
let data=options.data();
//数据代理开始
this._data={};
Object.keys(data).forEach(key=>{
this._data=Object.defineProperty(this._data,key,{
get(){
return data[key]
},
set(val){
data[key]=val;
}
})
});
//数据劫持
Object.keys(data).forEach(key=>{
let value=data[key];
Object.defineProperty(data,key,{
get(){
console.log('有人读取我了');
return value;
},
set(val){
value=val;
}
})
})
};
let vm=new Vue({
el:'#app',
data(){
return {
msg:'1'
}
}
});
console.log(vm._data.msg);
</script>