Proxy.revocable()

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

構文

Proxy.revocable(target, handler);

引数

target
ターゲットのオブジェクト (ネイティブの配列、関数、あるいは他の Proxy も含め、どのような種類のオブジェクトでもかまいません) または、Proxy でラップする関数。
handler
関数をプロパティとして持つオブジェクトで、その関数で、Proxy に対して操作が行われた場合の挙動を定義します。

返り値

新しく作成された取り消し可能な 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 2015 (6th Edition, ECMA-262)
Proxy Revocation Functions の定義
標準 初期定義です。
ECMAScript Latest Draft (ECMA-262)
Proxy Revocation Functions の定義
ドラフト

ブラウザー実装状況

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

凡例

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

関連情報