Proxy

Proxy代理器

用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。

简单的例子,对获取某属性的处理

let apple = {
  color: 'red',
  price: 8.6
}

let proxy = new Proxy(apple, {
  get (target, key) {
    if (key === 'price') {
      return target[key] + 2.2
    } else {
      return target[key]
    }
  }
})

console.log(proxy.price)

10.8

如果想对某个数据进行保护,即不允许修改,也可以使用代理器

let apple = {
  color: 'red',
  price: 8.6
}

let proxy = new Proxy(apple, {
  set (target, key, value) {
    return false
  }
})
proxy.color = 'green'
console.log(proxy.color)

red

创建一个可撤销的代理器

let apple = {
  color: 'red',
  price: 8.6
}

let proxy = Proxy.revocable(apple, {
  set (target, key, value) {
    return false
  }
})
proxy.proxy.color = 'green' // 通过可撤销实例的proxy属性得到代理器
window.console.log(proxy.proxy.color)
proxy.revoke() // 撤销代理
window.console.log(proxy.proxy.color)

red
TypeError: illegal operation attempted on a revoked proxy
原文地址:https://www.cnblogs.com/allenzhang-920/p/13193538.html