对象代理的作用: 在获取和设置对象的时候必须经过对象代理

对象代理中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);  // 代理四