The Proxy.revocable()
method is used to create a revocable Proxy
object.
Syntax
Proxy.revocable(target, handler);
Parameters
target
- A target object to wrap with
Proxy
. It can be any sort of object, including a native array, a function, or even another proxy. handler
- An object whose properties are functions define the behavior of proxy
p
when an operation is performed on it.
Return value
A newly created revocable Proxy
object is returned.
Description
A revocable Proxy
is an object with following two properties {proxy: proxy, revoke: revoke}
.
proxy
- A Proxy object created with
new Proxy(target, handler)
call. revoke
- A function with no argument to invalidate (switch off) the
proxy
.
If the revoke()
function gets called, the proxy becomes unusable: Any trap to a handler will throw a TypeError
. Once a proxy is revoked, it will remain revoked and can be garbage collected. Calling revoke()
again has no effect.
Examples
Using Proxy.revocable
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
Specifications
Specification |
---|
ECMAScript (ECMA-262) The definition of 'Proxy Revocation Functions' in that specification. |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Desktop | Mobile | Server | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
revocable | Chrome Full support 63 | Edge Full support 12 | Firefox Full support 34 | IE No support No | Opera Full support 50 | Safari Full support 10 | WebView Android Full support 63 | Chrome Android Full support 63 | Firefox Android Full support 34 | Opera Android Full support 46 | Safari iOS Full support 10 | Samsung Internet Android Full support 8.0 | nodejs Full support 6.0.0 |
Legend
- Full support
- Full support
- No support
- No support