1. 首页
  2. JS

Proxy set get 示例详情

const handler = {
    get(target, prop) {
        console.log(`Getting value: ${prop}, ${target[prop]}`);
        return target[prop];
    },
    set(target, prop, value) {
        console.log(`Setting value: ${prop}, ${value}`);
        target[prop] = value;
        // 通常在这里触发视图更新
        return true;
    }
};

var data = new Proxy({}, handler);

// 控制台会输出:Setting value: price, 5
data.price = 5; 

// 直接设置报错:test.html:30 Uncaught TypeError: Cannot set properties of undefined (setting 'number')
// data.frient.number = 10; 

// 控制台会输出:Setting value: info, [object Object]
data.info = {
    sex: '男',
    age: 18
};

// 控制台会输出:Getting value: info, [object Object]
data.info.score = 100

// 控制台会输出:Getting value: info, [object Object]
// 控制台会输出:100
console.log(data.info.score);

// 控制台会输出:Proxy(Object) {price: 5, info: {…}}
console.log(data);

TOP