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

* [代理(Proxy)和反射(Reflection)](#代理proxy和反射reflection)
  * [代理(Proxy)](#代理proxy)
    * [术语(term)](#术语term)
    * [语法(syntax)](#语法syntax)
      * [参数](#参数)
    * [方法(function)](#方法function)
    * [handler 对象的方法](#handler-对象的方法)
    * [示例(example)](#示例example)
  * [反射(Reflection)](#反射reflection)
  * [引用](#引用)

## 代理(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)
