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