代理模式

Proxy

概述
为其它对象提供一个代理以控制对这些对象的访问:代理控制具体对象的引用
代理可以是任何对象:文件、资源、内存中的对象或者一些难以复制的东西
用一个类去控制其它的类
应用
明星和经纪人:明星是对象,经纪人是代理
参考代码 - ES5
Proxy:报酬合适才允许表演
class Star {
  play() {
    console.log('playing');
  }
}
class Proxy {
  constructor() {
    this.star = new Star()
  }
  talk(price) {
    if (price > 1000) {
      this.star.play()
    } else {
      console.log('not allowed');
    }
  }
}
Usage
let proxy = new Proxy()
proxy.talk(1000)
proxy.talk(10000)
参考代码 - ES6 - Proxy
Proxy:仿Vue数据驱动;news是一个DOM节点
let obj = {}
let pro = new Proxy(obj, {
  get(tar, key) {
    return tar[key]
  },
  set(tar, key, val) {
    if (key == 'data') {
      tar[key] = val
      news.innerHTML = val
    } else {
      console.log('not allowed');
    }
  }
})