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
pwhen 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
