对象代理的作用: 在获取和设置对象的时候必须经过对象代理
对象代理中get和set方法的说明
- get: 获取对象中的值的时候会触发对象代理中的get方法
- set: 设置对象中的值的时候会触发对象代理中的set方法
// 固定写法
new Proxy(obj, {
get(obj, key){
/*
obj: 代表当前代理的对象
key: 代表当前要获取的对象属性名
*/
console.log('获取属性的时候触发 : 一定要经过代理时候才能获取');
},
set(obj, key, value){
/*
obj: 代表当前代理的对象
key: 代表当前要设置的对象属性名
value: 代表当前要设置的对象属性的值
*/
console.log('设置属性的时候触发');
}
});
let agentJson = {a: '代理1', b: '代理2'};
// 设置对象的代理
let p1 = new Proxy(agentJson, {
get(obj, key) { // 获取值得时候触发
// return '代理三';
return obj[key];
},
set(obj, key, value) { // 设置值得时候触发,设置值得时候一定要通过 p1. 来进行设置要不然没有效果
obj[key] = '代理四';
}
});
p1.b = 10;
console.log(agentJson.a); // 代理1
console.log(agentJson.b); // 代理四