vue3实现响应式原理
1.通过Proxy(代理):拦截对象中任意属性的变化,包括属性的读写、属性的添加、属性的删除等。
2.通过Reflect(反射): 对被代理对象(源对象)的属性进行操作
let person = {
name: '张三',
age: 18
}
let p = new Proxy(person,{
// 读取时候调用
get(target,prop){
return Reflect.get(target,prop)
},
// 增加或者修改时候调用
set(target,prop,value) {
// target[prop] = value
Reflect.set(target,prop,value)
},
// 删除时调用
deleteProperty(target, prop) {
return Reflect.deleteProperty(target,prop)
// return delete target[prop]
}
})