ECMAScript 2016 proxy 代理对象

81 阅读1分钟
 //原本监听对象属性, 使用definProperty

// Proxy 对象
 const person = {
  name:'zce',
  age: 20
}

// 第一个参数为目标对象,第二个也是对象, 为代理的处理对象
const personProxy = new Proxy(person,{
  get(target,property){
    return property in target ? target[property]: "default"
    // console.log(target,property)
    // return 100
  },
  set(target,property,value){
    console.log(target,property,value)
    if(property==='age'){
      if(!Number.isInteger(value)) {
        throw new TypeError(`${value} is not an int`)
      }
    }
    target[property] = value
  }
})
personProxy.age = 20
console.log(personProxy.age)
console.log(personProxy.hhh)