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
.
Перехваты
Данная "ловушка" может перехватывать следующие операции:
- Удаление свойства:
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