zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    菜单、toast、对话框的使用
    对话框应用反射销毁
    java随机汉字生成
    Android从主界面退出
    Android获取网络状态
    ssh secure shell 乱码问题
    MongDB安装使用
    安装scrapy
    列表查找以及二分查找
    Tuple、list的区别以及dict和set
  • 原文地址:https://www.cnblogs.com/allenzhang-920/p/13193538.html
Copyright © 2011-2022 走看看