Proxy.revocable()

Proxy.revocable() メソッドは、取り消し可能な Proxy オブジェクトを作成できます。

構文

Proxy.revocable(target, handler);

引数

target
Proxy でラップする対象のオブジェクトです。これは一連のオブジェクト、例えばネイティブの配列、関数、他の. Proxy などを取ることもできます。
handler
オブジェクトで、プロパティが操作が実行されたときのプロキシ p の動作を定義する関数であるものです。

返値

新しく作成された取り消し可能な Proxy オブジェクト。

解説

取り消し可能な Proxy は次の2つのプロパティ {proxy: proxy, revoke: revoke} を持ったオブジェクトです。

proxy
new Proxy(target, handler) 呼び出しで生成したプロキシオブジェクトです。
revoke
proxy を無効にするための引数を持たない関数です。

revoke() 関数を呼ぶと、プロキシオブジェクトは使用できなくなり、ハンドラーへのどんなトラップも TypeError をスローします。プロキシが取り消されると、取り消されたままになり、ガベージコレクションの対象となります。再度 revoke() が呼ばれても影響はありません。

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

仕様書

仕様書
ECMAScript (ECMA-262)
Proxy Revocation Functions の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
revocableChrome 完全対応 63Edge 完全対応 12Firefox 完全対応 34IE 未対応 なしOpera 完全対応 50Safari 完全対応 10WebView Android 完全対応 63Chrome Android 完全対応 63Firefox Android 完全対応 34Opera Android 完全対応 46Safari iOS 完全対応 10Samsung Internet Android 完全対応 8.0nodejs 完全対応 6.0.0

凡例

完全対応  
完全対応
未対応  
未対応

関連情報