handler.deleteProperty()

Метод handler.deleteProperty() является "ловушкой" (функция-перехватчик) для оператора delete.

Интерактивный пример

Синтаксис

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

Параметры

Следующие параметры передаются в метод deleteProperty.

target

Целевой объект.

property

Имя или Symbol свойства, которое нужно удалить.

this в момент вызова ссылается на объект handler.

Возвращаемое значение

Метод deleteProperty должен возвращать Boolean. Значение true, если свойство было успешно удалено, в противном случае false.

Описание

Метод handler.deleteProperty() является "ловушкой" для оператора delete.

Перехваты

Данная "ловушка" может перехватывать следующие операции:

Инварианты

Если следующие инварианты нарушены, то прокси выдаст ошибку TypeError:

  • Свойство не может быть удалено, если оно неконфигурируемое собственное свойство целевого объекта.

Примеры

Следующий код перехватывает действие оператора delete.

var 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
    }
  }
})

var 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

Смотрите также