1.什么是数据代理?
数据代理是ES6新推出的内置构造函数:proxy,是对数据劫持的优化
2.语法:new Proxy(对象,{})
对象:原来的对象
{}:内部书写获取器和设置器
获取器:get(target,property){return target[property]}
设置器:set(target,property,val){target[property] = val}
注:形参的书写无所谓
第一个形参(target):代理对象
第二个形参(property):代理对象中的某一个属性
3.相较于数据劫持的优点
代理完毕后给原来的对象中添加一条新的数据,会被自动代理
4.代码案例
<script>
const obj = {
name: 'qf001',
age: 18
}
const res = new Proxy(obj, {
get(target, property) {
return target[property]
},
set(target,property,val){
target[property] = val
}
})
obj.qwe = 100 //代理完毕后给原来的对象中添加一条新的数据
console.log(res) //打印结果:Proxy(Object) {name: 'qf001', age: 18, qwe: 100}
</script>