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
.
Интерактивный пример
const monster1 = {
texture: "scaly",
};
const handler1 = {
deleteProperty(target, prop) {
if (prop in target) {
delete target[prop];
console.log(`property removed: ${prop}`);
// Expected output: "property removed: texture"
}
},
};
console.log(monster1.texture);
// Expected output: "scaly"
const proxy1 = new Proxy(monster1, handler1);
delete proxy1.texture;
console.log(monster1.texture);
// Expected output: undefined
Синтаксис
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® 2026 Language Specification # sec-proxy-object-internal-methods-and-internal-slots-delete-p |
Совместимость с браузерами
Смотрите также
Proxy
handler
delete
operatorReflect.deleteProperty()