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
.
Интерактивный пример
Синтаксис
var p = new Proxy(target, {
deleteProperty: function (target, property) {},
});
Параметры
Возвращаемое значение
Метод deleteProperty
должен возвращать Boolean
. Значение true
, если свойство было успешно удалено, в противном случае false
.
Описание
Метод handler.deleteProperty()
является "ловушкой" для оператора delete
.
Перехваты
Данная "ловушка" может перехватывать следующие операции:
- Удаление свойства:
delete proxy[foo]
anddelete proxy.foo
Reflect.deleteProperty()
Инварианты
Если следующие инварианты нарушены, то прокси выдаст ошибку 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
Смотрите также
Proxy
handler
delete
operatorReflect.deleteProperty()