、、、、、、、、、、、仅对以前所学做复习记录使用、、、、、、、、、
proxy代理通俗可以理解为:在调用目标对象之前,进行一次拦截处理。只要调用该目标对象,都必须先调用执行proxy代理。
代理是对整个对象的代理,不是Object.defineProperty中对单个属性的代理
let obj={
name:'wyy',
age:18,
hobby:['美女','怡红院','哈哈哈'],
behavior:{
eat:'吃瓜',
sleep:'睡觉'
}
}
// new Proxy(目标对象,{拦截操作}),会自动监控目标对象中最外层属性,
// 即代理最外层的属性。这时的this指向p,不在指向obj
let p = new Proxy(obj, {
// target,property,value都是本身自带的参数,也可以修改为任何名字
// target:是目标对象,例如此例子中的obj
// property:是目标对象中的属性,例如name,age;如果目标对象中的属性不存在,则为undefine
// value:是修改后的属性值,例如obj.age=22 这个value就是22
get(target, property){
return target[property]
},
set(target,property,value){
target[property]=value+'123'
}
})
p.name='ccc' // 设置value 调用setter
p.hobby[0]='男人' //