0%

数据代理

  1. Vue中的数据代理:通过vm对象来代理data对象中属性的操作(读或写

  2. Vue中数据代理的好处:更加方便操作data中的数据

  3. 基本原理

    ​ 通过Object.defineProperty()把data对象中的所有属性添加到vm上中,为每一个添加到vm上的属性都指定一个getter()setter()函数,在getter()setter()函数;里面去操作data中对应的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 const vm=Vue.createApp({
data(){
return{
name:'Ann',
address:'06404'
}
}
})
vm
{
...
_data{
name:(...),
address:(...),
}
name:(...)
address:(...)//Object.defineProperty()
Object.defineProperty(vm,'name',{
value:_data.name.get()
enumerable:
writable:
configurable://默认为false,控制属性是否可以被删除

get(){
return _data.name.get()
}
set(value){
_data.name.set(value)
}
})
Object.defineProperty(vm,'address',{
value:_data.address.get()
enumerable:
writable:
configurable://默认为false,控制属性是否可以被删除
get(){
return _data.address.get()
}
set(value){
_data.address.set(value);
}
})
}