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.

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

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

Синтаксис

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

Параметры

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

target

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

property

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

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

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

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

Описание

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

Перехваты

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

Инварианты

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

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

Примеры

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

js
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

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