码迷,mamicode.com
首页 > 其他好文 > 详细

Proxy

时间:2020-06-28 00:16:23      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:type   erro   class   opera   min   tar   代理   bsp   get   

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

 

Proxy

标签:type   erro   class   opera   min   tar   代理   bsp   get   

原文地址:https://www.cnblogs.com/allenzhang-920/p/13193538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!