proxy = new Proxy({}, {
deleteProperty(target, propKey){
console.log(arguments);
return true;
}
});
proxy.xx = 3;
delete proxy.xx; // log and return true
proxy.xx // 3
Как и код, операция удаления не имеет эффекта.Как удалить свойство объекта, созданного прокси?
Я прочитал delete operator на MDN:
Функция удаления оператор удаляет данное свойство из объекта. При успешном удалении оно вернет true, иначе будет возвращено false. Тем не менее, важно рассмотреть следующие сценарии:
Если свойство, которое вы пытаетесь удалить, не существует, удалять не будет иметь никакого эффекта, и возвращает истину
Если свойство с тем же именем существует в цепочке прототипов объекта, а затем после удаления объект будет использовать свойство из цепи прототипа (другими словами, удаление только влияет на собственные свойства).
Любое свойство, объявленное с помощью var, не может быть удалено из глобальной области действия или из области действия.
Таким образом, delete не может удалять любые функции в глобальной области видимости (независимо от того, является ли это частью определения функции или выражения функции).
Функции, которые являются частью объекта (кроме глобальной области), могут быть удалены с удалением.
Любое свойство, объявленное с let или const, не может быть удалено из области действия, в которой они были определены.
Неконфигурируемые свойства не могут быть удалены. Сюда входят свойства встроенных объектов, таких как Math, Array, Object и свойства, которые создаются как неконфигурируемые с помощью методов Object.defineProperty().
Я думаю, что мой код не относится к указанным выше, поэтому как его объяснить? Благодарю.
'Reflect.deleteProperty' не требуется. Вы можете просто выполнить 'delete target [k]' – Pacerier