const student = {
score: 99,
name: 'xxx'
};
const handler = {
get: (target, prop) => {
console.log(target, prop, 'get');
return prop in target ? target[prop]: ''
},
set: (target, prop, value) => {
console.log(target, prop, value,'set');
if(prop === 'score') {
if(!Number.isInteger(value)) {
throw new TypeError('成绩为number');
}
}
target[prop] = value;
return true;
},
deleteProperty: (target, prop) => {
console.log(target, prop, 'delete');
delete target[prop];
}
};
const testProxy = new Proxy(student, handler);
Proxy 相比较Object.defineProperties
- 能够监视到对象的更多操作
- 能够更好的监视数组对象的操作
- 非侵入的方式监管了对象的读写