MVVM模型
- M:模型(Model) :对应
data
中的数据 - V: 视图(View) :模板
- VM:视图模型(ViewModel):Vue实例对象
M:
|
|
V:
|
|
VM:
观察发现:
- M中所有的属性,最后都出现在了VM中。
- VM中所有的属性及Vue原型上所有属性,在Vue模板中都可以直接使用。
数据代理
数据代理的实现基础
Object.defineProperty()
方法允许通过属性描述对象,定义或修改一个属性,然后返回修改后的对象,它的用法如下。
|
|
object
:属性所在的对象
propertyName
:字符串,表示属性
attributesObject
:属性描述对象
什么是数据代理
数据代理:通过一个对象代理对另一个对象中属性的操作(读/写)
|
|
- 定义两个对象
obj
和obj2
,通过Object.defineProperty()
方法给对象obj2
添加一个属性x
- 通过
get()
方法使obj2.x
获取到obj.x
的值,实现通过obj2
对象代理obj.x
属性的读 - 通过
set()
方法使obj2.x
获取到修改的具体值,将该值赋给obj.x
,实现通过obj2
对象代理obj.x
属性的写。
Vue中的数据代理
-
Vue中的数据代理:
- 通过
vm对象
来代理_data
对象中属性的操作(读/写)
- 通过
_data
是来自new Vue
时的对象data
-
Vue中数据代理的好处:
- 更加方便的操作
data
中的数据
- 更加方便的操作
-
基本原理:
- 通过
Object.defineProperty()
把_data
对象中所有属性添加到vm中 - 为每一个添加到vm上的属性,都指定一个
getter/setter
- 在
getter/setter
内部去操作(读/写)_data
中对应的属性。
- 通过