ECMAScript 6 新增的代理和反射为开发者提供了拦截并向基本操作嵌入额外行为的能力。具体地
说,可以给目标对象定义一个关联的代理对象,而这个代理对象可以作为抽象的目标对象来使用。代理是目标对象的抽象,它可以用作目标对象的替身,但又完全独立于目标对象
- 9.1.1
代理是使用 Proxy 构造函数创建的。这个构造函数接收两个参数:目标对象和处理程序对象
在代理对象上执行的任何操作实际上都会应用到目标对象const target = { id: 'target' }; const handler = {}; const proxy = new Proxy(target, handler); // id 属性会访问同一个值 console.log(target.id); // target console.log(proxy.id); // target // 给目标属性赋值会反映在两个对象上 // 因为两个对象访问的是同一个值 target.id = 'foo'; console.log(target.id); // foo console.log(proxy.id); // foo