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 の定義
標準 Initial definition.

ブラウザ実装状況

機能 Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
基本機能 (有) (有) 34 (34) 未サポート (有) 10.0
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本機能 未サポート (有) 34 (34) 未サポート ? 10.0

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: chikoski, shide55
 最終更新者: chikoski,