Proxy 会对 target 对象进行包装。它可以是任何类型的对象,包括内置的数组,函数甚至是另一个代理对象。
它是一个对象,它的属性提供了某些操作发生时所对应的处理函数。
我们可以使用 Proxy() 构造器来创建一个新的 Proxy 对象。构造器接收两个主要参数:
一个空的 handler 参数将会创建一个与被代理对象行为几乎完全相同的代理对象。通过在 handler 对象上定义一组处理函数,你可以自定义被代理对象的一些特定行为。例如,通过定义 get() 你就可以自定义被代理对象的 属性访问器。
本节列出了所有你可以自定义的处理函数。处理函数有时候也被成为“劫持”(traps),这是由于它们会对底层被代理对象的调用进行劫持。
我们定义了一个处理函数,它为 proxied 属性返回一个不同的值,而其他属性返回原值。