对于如下代码:
const vm = new Vue({data:{n:0}})
- new Vue内部对data对象进行监听,即一旦修改n的值以后,的值会立马变成修改后的值,如果在页面显示n的值的话,n会显示出修改后的值。
- new Vue会用一个变量把当前n的值保存下来,假设这个变量叫做xxx
let n = data.n
- Object.defineProperty给data对象一个虚拟的属性(假设为n),通过getter/setter方法模拟对’n’的读写操作同时覆盖原来的值,这样就保存了原始的值且不会被修改,使得数据更加的安全,getter/setter方法是ES6的语法。
- new Vue对data对象设置代理:创建一个空对象
const obj = {}
,通过Object.defineProperty给obj对象虚拟属性’n’,getter/setter方法返回了new Vue对data监听过的data.n,是我们需要获得或者设置的值。 - 即使没有给它取名为vm,但是只要new Vue之后就会产生代理对象,可以使用this访问