零基础学建网站,网站建设主管的策划案,公司招聘网站续费申请,杭州 网站建设公司核心#xff1a; 通过Proxy(代理): 拦截对data任意属性的任意(13种)操作, 包括属性值的读写, 属性的添加, 属性的删除等… 通过 Reflect(反射): 动态对被代理对象的相应属性进行特定的操作 const userData {name: John,age: 12
};let proxyUser new Proxy(use…核心 通过Proxy(代理): 拦截对data任意属性的任意(13种)操作, 包括属性值的读写, 属性的添加, 属性的删除等… 通过 Reflect(反射): 动态对被代理对象的相应属性进行特定的操作 const userData {name: John,age: 12
};let proxyUser new Proxy(userData, {// 拦截读取属性值get (target, prop) {return Reflect.get(target, prop)},// 拦截设置属性值或添加新属性set (target, prop, value) {return Reflect.set(target, prop, value)},// 拦截删除属性deleteProperty (target, prop) {return Reflect.deleteProperty(target, prop)}
})
// 设置属性值
proxyUser.name bob
proxyUser.age 13// 添加属性
proxyUser.sex 男
console.log(user)// 删除属性
delete proxyUser.sex
console.log(user)
Vue3的响应式比Vue2好在哪里
效率更高了Vue2中假设监听某个对象该对象中有一万个属性他要循环遍历得到每个属性并且通过每个属性的Object.defineProperty为每个属性加上set 和 get 方法那如果有一万个就要加上一万对get 和 set方法所以效率就很低Vue3中直接一个代理对象proxy加上Reflect再调用相关的方法就可以解决这个问题Vue3中响应式的话是个深层次的监视可监听对象里面的对象和数组