let obj = {
name:"Vue",
age:7
}
// 创建一个代理对象
let obj2 = new Proxy(obj, {
get(target, property){
// 什么时候执行??
// 获取obj2的属性的时候执行这里的代码
// target就是obj
// property就是想要获取的这个属性名
console.log("执行了get");
console.log(target, property);
return target[property]
},
set(target, property, newVal){
console.log("执行了set方法",newVal);
target[property]=newVal;
}
})
obj2.age = 8; // 触发了set方法的执行。 需要在set方法中修改obj的age属性的值,修改成新的值
console.log(obj2.age); // 执行了get ,这个值是get中的return 值
console.log("obj.age为:",obj.age);
// 现象: 我们修改了obj2.age,而obj.age这个也改了。所本质上是通过修改obj2的属性来达到影响obj的属性被修改的目的。
// 所以说obj2是一个代理对象。