## 概述

处理器对象用来自定义代理对象的各种可代理操作。

## 方法

一共有 13 种可代理操作，每种操作的代号（属性名/方法名）和触发这种操作的方式列举如下。注意，如果没有定义某种操作，那么这种操作会被转发到目标对象身上。

`handler.getPrototypeOf()`
  在读取代理对象的原型时触发该操作，比如在执行 ``Object.getPrototypeOf`(proxy)` 时。
`handler.setPrototypeOf()`
  在设置代理对象的原型时触发该操作，比如在执行 ``Object.setPrototypeOf`(proxy, null)` 时。
`handler.isExtensible()`
  在判断一个代理对象是否是可扩展时触发该操作，比如在执行 ``Object.isExtensible`(proxy)` 时。
`handler.preventExtensions()`
  在让一个代理对象不可扩展时触发该操作，比如在执行 ``Object.preventExtensions`(proxy)` 时。
`handler.getOwnPropertyDescriptor()`
  在获取代理对象某个属性的属性描述时触发该操作，比如在执行 ``Object.getOwnPropertyDescriptor`(proxy, "foo")` 时。
`handler.defineProperty()`
  在定义代理对象某个属性时的属性描述时触发该操作，比如在执行 ``Object.defineProperty`(proxy, "foo", {})` 时。
`handler.has()`
  在判断代理对象是否拥有某个属性时触发该操作，比如在执行 `"foo" `in` proxy` 时。
`handler.get()`
  在读取代理对象的某个属性时触发该操作，比如在执行 `proxy.foo` 时。
`handler.set()`
  在给代理对象的某个属性赋值时触发该操作，比如在执行 `proxy.foo = 1` 时。
`handler.deleteProperty()`
  在删除代理对象的某个属性时触发该操作，比如在执行 `delete proxy.foo` 时。
`handler.ownKeys()`
  在获取代理对象的所有属性键时触发该操作，比如在执行 ``Object.getOwnPropertyNames`(proxy)` 时。
`handler.apply()`
  当目标对象为函数，且被调用时触发。
`handler.construct()`
  在给一个目标对象为构造函数的代理对象构造实例时触发该操作，比如在执行`new proxy()` 时。

## 规范

规范名称 | 规范状态 | 备注
--- | --- | ---
ECMAScript 2015 (6th Edition, ECMA-262) Proxy Object Internal Methods and Internal Slots | Standard |

## 浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

- Desktop
- Mobile

Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari
--- | --- | --- | --- | --- | ---
Basic support | 未实现 | 18 (18) | 12 | 未实现 | 未实现

Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile
--- | --- | --- | --- | --- | --- | ---
Basic support | 未实现 | 未实现 | 18 (18) | 未实现 | 未实现 | 未实现

## 相关链接

- `Proxy`