VUE数据的双向绑定是通过数据劫持和观察者模式(订阅者模式)的方式来实现的。
(1)、数据劫持:vue2.x使用Object.defineProperty(); Vue3使用的是proxy
当你把一个普通的 JavaScript 对象(json)传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的属性,并使用 Object.defineProperty 把这些属性全部转为 getter/setter。
目的是:感知属性的变化。当给属性赋值时,程序是能够感知的(知道的)。如果知道的话,就可以控制属性值的有效范围,也可以改变其它属性的值等,在Vue中也可以去改变模板上的显示。
(2)、观察者模式(订阅者模式)
目的:当属性发生变化时,所有使用该数据地方跟着变化