proxy与reflect之间的关系

proxy常和reflect搭配使用,当然他俩都是可以单独拿出来用的,他俩诞生的初衷也不是为了彼此成全,而是两个都是有一定独立的设计目的的,一个是代理,一个是映射。当然proxy和reflect搭配使用,可以更简便的使用的proxy

不使用reflect时

// reflect对proxy和之间的关系
let obj = {
    
    
  name: "zkf",
  sex: "male"
}
let handler = {
    
    
  get(tanget, propKey,receiver) {
    
    
    return tanget[propKey]
  }
}
let proxy = new Proxy(obj,handler)
console.log(proxy.name) // zkf
let obj = {
    
    
  name: "zkf",
  sex: "male"
}
let handler = {
    
    
  set(tanget, propKey, value, receiver) {
    
    
     tanget[propKey] = value
  }
}
let proxy = new Proxy(obj,handler)
obj.name = 'zhangkaifan'
console.log(proxy.name) // zhangkaifan

使用reflect时

// reflect对proxy和之间的关系
let obj = {
    
    
  name: "zkf",
  sex: "male"
}
let handler = {
    
    
  get(tanget, propKey,receiver) {
    
    
    return Reflect.get(tanget,propKey)
  }
}
let proxy = new Proxy(obj,handler)

console.log(proxy.name)
let obj = {
    
    
  name: "zkf",
  sex: "male"
}
let handler = {
    
    
  set(tanget, propKey, value, receiver) {
    
    
    Reflect.set(tanget, propKey, value, receiver)
  }
}
let proxy = new Proxy(obj,handler)
obj.name = 'zhangkaifan'
console.log(proxy.name)

二者对比是不是超方便

猜你喜欢

转载自blog.csdn.net/weixin_43131046/article/details/128321657