<script>
let obj = {
x: 100
}
let obj2 = {
y: 200
}
//当obj2.x的值被修改时,obj.x的值也会被修改
Object.defineProperty(obj2, 'x', {
get() {
return obj.x
},
set(value) {
obj.x = value
}
})
</script>

1、data先会把数据赋值给_data(下划线),vm就可以通过vm._data(下划线)访问到数据。
2、vm身上被添加name,address属性,只要有人读取name和address,就会通过Object.defineProperty里面的getter读取,只要有人修改vm.name,就会调用Object.defineProperty里面的setter使得vm._data.name也被修改。