Proxy.revocable()
Proxy.revocable()
メソッドは、取り消し可能な Proxy
オブジェクトを作成するために使用します。
構文
Proxy.revocable(target, handler);
引数
target
-
Proxy
でラップする対象のオブジェクトです。これは一連のオブジェクト、例えばネイティブの配列、関数、他のプロキシーなどを取ることもできます。 handler
-
プロキシー
p
に対して操作が行われたときの動作を定義する関数をプロパティとするオブジェクトです。
返値
新しく作成された取り消し可能な Proxy
オブジェクト。
解説
取り消し可能な Proxy
は {proxy: proxy, revoke: revoke}
の 2 つのプロパティを持ったオブジェクトです。
proxy
-
new Proxy(target, handler)
呼び出しで生成したプロキシーオブジェクトです。 revoke
-
proxy
を無効にするための引数を持たない関数です。
revoke()
関数を呼び出すと、プロキシーオブジェクトは使用できなくなります。ハンドラーへのトラップが発生すると、どれでも TypeError
が発生します。プロキシーが取り消されると、取り消されたままになり、ガベージコレクションの対象となります。再度 revoke()
が呼ばれても影響はありません。
例
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 が発生
proxy.foo = 1 // TypeError が発生
delete proxy.foo; // これも TypeError
typeof proxy // "object" と表示。 typeof でトラップは発生しない
仕様書
Specification |
---|
ECMAScript Language Specification # sec-proxy.revocable |
ブラウザーの互換性
BCD tables only load in the browser