handler.deleteProperty()
handler.deleteProperty()
メソッドは、 delete
演算子のトラップです。
試してみましょう
構文
const p = new Proxy(target, { deleteProperty: function(target, property) { } });
引数
次の引数が deleteProperty
メソッドに渡されます。 this
はハンドラにバインドされます。
target
-
ターゲットオブジェクト
property
-
削除するプロパティの名前
返値
deleteProperty
メソッドはプロパティが正しく削除されたかどうか示す Boolean
値を返さなければなりません。
解説
handler.deleteProperty()
メソッドはdelete
操作に対するトラップです。
介入
このトラップは下記の操作に介入できます。
- プロパティの削除:
delete proxy[foo]
とdelete proxy.foo
Reflect.deleteProperty()
不変条件
以下の不変条件に違反している場合、プロキシは TypeError
を発生します。
- ターゲットオブジェクトの非設定独自プロパティとして存在する場合、プロパティは削除されません。
例
プロパティ値の取得のトラップ
次のコードは delete
操作をトラップします。
const p = new Proxy({}, {
deleteProperty: function(target, prop) {
if (prop in target){
delete target[prop]
console.log('property removed: ' + prop)
return true
}
else {
console.log('property not found: ' + prop)
return false
}
}
})
let result
p.a = 10
console.log('a' in p) // true
result = delete p.a // "property removed: a"
console.log(result) // true
console.log('a' in p) // false
result = delete p.a // "property not found: a"
console.log(result) // false
仕様書
Specification |
---|
ECMAScript Language Specification # sec-proxy-object-internal-methods-and-internal-slots-delete-p |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
Proxy
handler
delete
operatorReflect.deleteProperty()