目录
3. 使用 Object.defineProperty() 来进行数据劫持有什么缺点?
15. v-model 可以被用在自定义组件上吗?如果可以,如何使用?
17. 对keep-alive的理解,它是如何实现的,具体缓存的是什么?
19. Vue 中给 data 中的对象属性添加一个新的属性时会发生什么?如何解决?
23. Vue data 中某一个属性的值发生改变后,视图会立即同步执行重新渲染吗?
一、Vue 基础
1. Vue的基本原理
当一个Vue实例创建时,Vue会遍历data中的属性,用 Object.defineProperty(vue3.0使用proxy )将它们转为 getter/setter,并且在内部追踪相关依赖,在属性被访问和修改时通知变化。 每个组件实例都有相应的 watcher 程序实例,它会在组件渲染的过程中把属性记录为依赖,之后当依赖项的setter被调用时,会通知watcher重新计算,从而致使它关联的组件得以更新。
2. 双向数据绑定的原理
Vue.js 是采用数据劫持结合发布者-订阅者模式