handler.deleteProperty()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
試してみましょう
構文
js
new Proxy(target, {
deleteProperty(target, property) {
}
});
引数
返値
deleteProperty()
メソッドはプロパティが正しく削除されたかどうか示す論理値を返さなければなりません。
解説
介入
このトラップは下記の操作に介入できます。
delete
演算子:delete proxy[foo]
やdelete proxy.foo
Reflect.deleteProperty()
他にも、[[Delete]]
内部メソッドを呼び出すあらゆる操作に介入できます。
不変条件
以下の不変条件に違反している場合、プロキシーは TypeError
を発生します。
- ターゲットオブジェクトの非設定独自プロパティとして存在する場合、プロパティは削除されません。
例
プロパティ値の取得のトラップ
次のコードは delete
操作をトラップします。
js
const p = new Proxy(
{},
{
deleteProperty(target, prop) {
if (!(prop in target)) {
console.log(`property not found: ${prop}`);
return false;
}
delete target[prop];
console.log(`property removed: ${prop}`);
return true;
},
},
);
p.a = 10;
console.log("a" in p); // true
const result1 = delete p.a; // "property removed: a"
console.log(result1); // true
console.log("a" in p); // false
const result2 = delete p.a; // "property not found: a"
console.log(result2); // false
仕様書
Specification |
---|
ECMAScript Language Specification # sec-proxy-object-internal-methods-and-internal-slots-delete-p |
ブラウザーの互換性
BCD tables only load in the browser