> For the complete documentation index, see [llms.txt](https://raozhanping.gitbook.io/notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://raozhanping.gitbook.io/notes/js/js-es6-proxy.md).

# 代理(Proxy)和反射(Reflection)

* [代理(Proxy)和反射(Reflection)](https://raozhanping.gitbook.io/notes/js/pages/-LmwF5iaZFDJIdIHzJPl#代理proxy和反射reflection)
  * [代理(Proxy)](https://raozhanping.gitbook.io/notes/js/pages/-LmwF5iaZFDJIdIHzJPl#代理proxy)
    * [术语(term)](https://raozhanping.gitbook.io/notes/js/pages/-LmwF5iaZFDJIdIHzJPl#术语term)
    * [语法(syntax)](https://raozhanping.gitbook.io/notes/js/pages/-LmwF5iaZFDJIdIHzJPl#语法syntax)
      * [参数](https://raozhanping.gitbook.io/notes/js/pages/-LmwF5iaZFDJIdIHzJPl#参数)
    * [方法(function)](https://raozhanping.gitbook.io/notes/js/pages/-LmwF5iaZFDJIdIHzJPl#方法function)
    * [handler 对象的方法](https://raozhanping.gitbook.io/notes/js/pages/-LmwF5iaZFDJIdIHzJPl#handler-对象的方法)
    * [示例(example)](https://raozhanping.gitbook.io/notes/js/pages/-LmwF5iaZFDJIdIHzJPl#示例example)
  * [反射(Reflection)](https://raozhanping.gitbook.io/notes/js/pages/-LmwF5iaZFDJIdIHzJPl#反射reflection)
  * [引用](https://raozhanping.gitbook.io/notes/js/pages/-LmwF5iaZFDJIdIHzJPl#引用)

## 代理(Proxy)

> Proxy 对象用于定义基本操作的自定义行为(如属性查找，赋值，枚举，函数调用等)

### 术语(term)

* handler &#x20;

  包含陷阱（traps）的占位符对象。
* traps &#x20;

  提供属性访问的方法。这类似于操作系统中捕获器的概念。
* target &#x20;

  代理虚拟化的对象。它通常用作代理的存储后端。根据目标验证关于对象不可扩展性或不可配置属性的不变量（保持不变的语义）。

### 语法(syntax)

```javascript
let p = new Proxy(target, handler);
```

#### 参数

* target
  * Object | Array | Function | Proxy
  * 用Proxy包装的目标对象（可以是任何类型的对象，包括原生数组，函数，甚至另一个代理）。
* handler
  * Object
  * 一个对象，其属性是当执行一个操作时定义代理的行为的函数。

### 方法(function)

* Proxy.revacable() &#x20;

  创建一个可撤销的Proxy对象

### handler 对象的方法

handler 对象是一个占位符对象，它包含Proxy的捕获器。

### 示例(example)

## 反射(Reflection)

## 引用

* [MDN-Proxy](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy)
