其他分享
首页 > 其他分享> > proxy

proxy

作者:互联网

Proxy

let person = { // 普通对象
  name: 'zs',
  age: 18
}
const p = new Proxy(person, {})
 let person = { // 普通对象
   name: 'zs',
   age: 18
 }
 // 返回值p是一个代理对象 对代理对象的任何增删改查都会自动映射到person对象中
 const p = new Proxy(person, {
   get(target, propName) { // 读取p代理对象中的属性自动执行get
     console.log(`有人读取了person身上的${propName}属性`);
     return target[propName]
   },
   set(target, propName, value) { // 修改或增加p代理对中的属性自动执行set
     console.log(`有人修改了person身上的${propName}属性,取值是${value}`);
     target[propName] = value
   },
   deleteProperty(target, propName) { // 删除p身上的属性自动会执行 deleteProperty
     console.log(`删除了person身上的${propName}属性`);
     return delete target[propName]
   }
 })

Reflect

let person = { // 普通对象
  name: 'zs',
  age: 18
}
const p = new Proxy(person, {
  get(target, propName) {
    console.log(`有人读取了person身上的${propName}属性`);
    return Reflect.get(target, propName)
  },
  set(target, propName, value) {
    console.log(`有人修改了person身上的${propName}属性,取值是${value}`);
    Reflect.set(target, propName, value)
  },
  deleteProperty(target, propName) {
    console.log(`删除了person身上的${propName}属性`);
    return Reflect.deleteProperty(target, propName)
  }
})

标签:log,target,对象,person,proxy,propName,属性
来源: https://www.cnblogs.com/xiebenyin-/p/15855484.html