vue3之reactive底层Proxy原理

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
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>

<body>
<script>
let person = {
name: 'ropon',
age: 18
}
const p = new Proxy(person, {
get (target, propsName) {
console.log(target, propsName)
console.log(`有人读取了p身上${propsName}的属性`)
return target[propsName]
},
set (target, propsName, value) {
console.log(`有人设置或新增了p身上${propsName}属性,值是${value}`)
target[propsName] = value
},
deleteProperty (target, propsName) {
console.log(`有人删除了p身上${propsName}属性`)
return delete target[propsName]
}
})
</script>
</body>

</html>