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);