💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 一、概述 Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。 Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。 >[danger] > 1、简单来说,proxy提供了一种类似java等高级语言的代理机制,可以在调用层面拦截请求,修改行为; > 2、ES6 原生提供 Proxy 构造函数,用来生成 Proxy 实例。 ## 二、用法 ~~~javascript var proxy = new Proxy(target, handler); ~~~ Proxy 对象的所有用法,都是上面这种形式,不同的只是handler参数的写法。其中,new Proxy()表示生成一个Proxy实例,target参数表示所要拦截的目标对象,handler参数也是一个对象,用来定制拦截行为。 ## 三、简单例子 ~~~javascript var target = {}; var handler = {}; var proxy = new Proxy(target, handler); proxy.a = 'b'; target.a // "b" ~~~ 上面代码中,handler是一个空对象,没有任何拦截效果,访问proxy就等同于访问target。 所以,代理的重点是handler拦截器的逻辑;