一、什么是双向数据绑定?
可以把它想象成“数据和界面之间的自动传话筒”。比如你在网页的输入框里打字,输入的内容会自动保存到后台的数据里;反过来,如果后台的数据被修改了(比如代码更新),输入框里的内容也会自动跟着变。就像两个人互相传话,一方动,另一方也动,完全不用你手动操作
二、Vue2和Vue3的监控数据类比
-
Vue2:
用Object.defineProperty
监控数据,像是一个只能盯着固定门窗的保安。它只能监控已有的属性,如果家里突然多开一扇窗户(新增属性)或拆掉一堵墙(删除属性),它就懵了,得手动告诉它(用Vue.set
方法) -
Vue3:
改用Proxy
监控数据,像装了一套全屋智能监控。不管新增窗户、拆墙,还是挪家具(数组长度变化),它都能自动发现,不用手动提醒
三、 具体的差异
1.数据劫持方式不同
- Vue2:基于
Object.defineProperty
,通过递归遍历对象的每个属性,逐个添加getter/setter
来监听数据变化。这种方式只能劫持对象的已有属性