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

仕様書

仕様書
ECMAScript (ECMA-262)
[[Delete]] の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
deletePropertyChrome 完全対応 49Edge 完全対応 12Firefox 完全対応 18IE 未対応 なしOpera 完全対応 36Safari 完全対応 10WebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 18Opera Android 完全対応 36Safari iOS 完全対応 10Samsung Internet Android 完全対応 5.0nodejs 完全対応 6.0.0

凡例

完全対応  
完全対応
未対応  
未対応

関連情報