Vue的依赖收集、更新
我们都知道,只要在 Vue 实例中声明过的数据,那么这个数据就是响应式的。 什么是响应式,也即是说,数据发生改变的时候,视图会重新渲染,匹配更新为最新的值。 那么Vue如何监听数据变化? 数据变化后,如何通知视图更新? 数据变化后,视图怎么知道何时更新 思考以上3个问题 先介绍下Object.defineProperty(),因为这个方法是Vue实现响应式系统的重中之重 Object.defineProperty() MDN上的定义: Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。 语法: Object.defineProperty(obj, prop, desc) 使用: const obj = {name: 'Bob'} Object.defineProperty(obj, 'name', { get(){ console.log('get 被触发') }, set(val){ console.log('set 被触发') } }) obj.name //get 被触发 obj.name = 'Lily' //set 被触发 Object.defineProperty可以为对象属性设置get、set函数, get:属性被访问时触发 set:属性被赋值时触发 其实 Object