Proxy的set方法


    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是一个代理对象。
posted @ 2021-07-04 21:54  onceweb  阅读(306)  评论(0)    收藏  举报