处理器对象用来自定义代理对象的各种可代理操作。
一共有 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 |
| 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) | 未实现 | 未实现 | 未实现 |