Proxy.revocable
Proxy.revocable
Proxy.revocable()
方法可以用来创建一个可撤销的代理对象。
语法
Proxy.revocable(target, handler
参数
target
用Proxy
包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)。
返回值
返回一个包含了所生成的代理对象本身以及该代理对象的撤销方法的对象。
描述
该方法的返回值是一个对象,其结构为:{"proxy": proxy, "revoke": revoke},其中:
proxy
表示新生成的代理对象本身,和用一般方式new Proxy(target, handler)
创建的代理对象没什么不同,只是它可以被撤销掉。
一旦某个代理对象被撤销,它将变的几乎完全不可用,在它身上执行任何的可代理操作都会抛出TypeError
异常(注意,可代理操作一共有14 种
,执行这 14 种
操作以外的操作不会抛出异常)。一旦被撤销,这个代理对象永远不可能恢复到原来的状态,同时和它关联的目标对象以及处理器对象将有可能被垃圾回收掉。调用撤销方法多次将不会有任何效果,当然,也不会报错。
示例
var revocable = Proxy.revocable{}, {
get: function(target, name) {
return "[[" + name + "]]";
}
}
var proxy = revocable.proxy;
console.log(proxy.foo // "[[foo]]"
revocable.revoke(
console.log(proxy.foo // TypeError is thrown
proxy.foo = 1 // TypeError again
delete proxy.foo; // still TypeError
typeof proxy // "object", typeof doesn't trigger any trap
规范
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Proxy Revocation Functions' in that specification. | Standard | Initial definition. |
ECMAScript Latest Draft (ECMA-262)The definition of 'Proxy Revocation Functions' in that specification. | Draft | |
浏览器兼容性
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | 34 (34) | No support | (Yes) | 10.0 |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | No support | (Yes) | (Yes) | 34 (34) | No support | ? | 10.0 |