Vue 最独特的特性之一,是其非侵入性的响应式系统。数据模型仅仅是普通的 JavaScript 对象。而当你修改它们时,视图会进行更新。这使得状态管理非常简单直接,不过理解其工作原理同样重要,这样你可以避开一些常见的问题。
通俗点讲:“响应式”,是指当数据改变后,Vue 会通知到使用该数据的代码。例如,视图渲染中使用了数据,数据改变后,视图也会自动更新。
代理
想象一个情景,有三个人物,房东(原始数据)、中介(Vue)、租客(我自己)。
租客通过中介找到了房子,后面嫌贵了想直接联系房东,省掉中介费,但是因为签过合同,中介在房东的手机里安装了监听器(Object.defineProperty),任何小动作都会被中介监听到,再狠一点的,把房东藏起来,你都没地方找,就只能通过中介了。
使用代理(是一种设计模式)和 Object.defineProperty() 实现双向数据绑定 Vue是使用Object.defineProperty()对data对象进行属性进行绑定和监控的
let vm = new Vue({data:mydata})
vm 就是data数据的代理,比如对data.n 进行操作,不直接操作data.n 而是通过vm.n进行操作 这个new Vue()这一步实现了3个重要步骤
- 会让vm成为mydata的代理
- 会对mydata所有属性进行监控
- 然后当属性变化时,就会改变mydata的属性值,并重新渲染