handler.isExtensible()
試してみましょう
handler.isExtensible()
は Object.isExtensible()
に対するトラップです。
構文
const p = new Proxy(target, { isExtensible: function(target) { } });
引数
次の引数は isExtensible
メソッドに渡されます。 this
はハンドラーにバインドされます。
target
- ターゲットオブジェクトです。
返値
isExtensible
メソッドは真偽値を返さなければなりません。
解説
handler.isExtensible()
メソッドは Object.isExtensible()
に対するトラップです。
介入
このトラップは下記の操作に介入できます。
不変条件
以下の不変条件に違反している場合、プロキシは TypeError
を発生します。
Object.isExtensible(proxy)
はObject.isExtensible(target)
と同じ値を返さなければなりません。
例
getOwnPropertyNames のトラップ
次のコードでは Object.isExtensible()
をトラップします。
const p = new Proxy({}, {
isExtensible: function(target) {
console.log('called');
return true;
}
});
console.log(Object.isExtensible(p)); // "called"
// true
次のコードでは不変条件に違反します。
const p = new Proxy({}, {
isExtensible: function(target) {
return false;
}
});
Object.isExtensible(p); // TypeError is thrown
仕様書
ブラウザーの互換性
BCD tables only load in the browser