--- title: Proxy.revocable() slug: Web/JavaScript/Reference/Global_Objects/Proxy/revocable tags: - ECMAScript 2015 - JavaScript - Method - Proxy translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/revocable ---
Proxy.revocable()
メソッドは、取り消し可能な {{jsxref("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()
関数を呼ぶと、プロキシオブジェクトは使用できなくなり、ハンドラーへのどんなトラップも {{jsxref("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
仕様書 |
---|
{{SpecName('ESDraft', '#sec-proxy.revocable', 'Proxy Revocation Functions')}} |
{{Compat("javascript.builtins.Proxy.revocable")}}