Proxy
const person = {
name: 'xm',
age: 18
}
const personProxy = new Proxy(person, {
get(target, property) {//target代理目标对象,property目标属性名称
return property in target ? target[property] : 'default'//访问存在的属性就返回,不存在的就返回default
//console.log(target,property);
},//通过get方法监视属性的访问
set(target, property, value) { //target代理目标对象,property目标属性名称 value 要写入的属性值
if (property === 'age') {//判断输入的属性值是否合适
if (!Number.isInteger(value)) {
throw new TypeError(`${value} is not an int`)
}
}
console.log(target, property, value);
}//通过set方法监视属性的设置
})//创建一个代理对象
console.log(personProxy.name);
personProxy.gender = true;
personProxy.age = 'true';//报错