handler.deleteProperty()

handler.deleteProperty() メソッドは、 delete 演算子のトラップです。

試してみましょう

構文

const p = new Proxy(target, {
  deleteProperty: function(target, property) {
  }
});

引数

次の引数が deleteProperty メソッドに渡されます。 this はハンドラにバインドされます。

target

ターゲットオブジェクト

property

削除するプロパティの名前

返値

deleteProperty メソッドはプロパティが正しく削除されたかどうか示す Boolean 値を返さなければなりません。

解説

handler.deleteProperty() メソッドはdelete操作に対するトラップです。

介入

このトラップは下記の操作に介入できます。

不変条件

以下の不変条件に違反している場合、プロキシは 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

関連情報