1. 原理
在生成Vue实例时,会对传入的 data 的所有属性进行遍历,并使用
Object.defineProperty 把这些属性全部转为 getter/setter,对属性的读写进行监控。vm 作为代理,它会在组件渲染的过程中调用 getter 方法把 data 中的属性记录为依赖。之后当依赖项的 setter 触发时,它所关联的组件重新渲染。简单来讲就是当我们修改vm的属性时,页面会自动改变。
2. 注意:
由于 JavaScript 的限制,Vue 不能检测数组和对象的变化。
但我们可以使用 Vue.set 或 this.$set 来解决这个问题,具体可以看官方文档