Почему оператор возвращает False для свойства прокси, но свойство все еще доступно в JavaScript?Javascript

Форум по Javascript
Anonymous
Почему оператор возвращает False для свойства прокси, но свойство все еще доступно в JavaScript?

Сообщение Anonymous »

Я пытаюсь использовать прокси -прокси JavaScript, чтобы скрыть свойство от обнаружения, сохраняя его в целевом объекте. The Has Trap успешно делает «секрет» в Proxy вернуть false , но свойство по -прежнему доступно напрямую.
Пример кода:

Код: Выделить всё

const target = { secret: 123, public: 456 };
const proxy = new Proxy(target, {
has(t, prop) {
if (prop === 'secret') return false; // Hide from `in` checks
return prop in t;
}
});

console.log('secret' in proxy);
console.log(proxy.secret);
Вопросы:
  • Почему оператор в не блокирует Direct Доступ к собственности? Есть ли конкретные ловушки (например, Get , ownkeys ), которые должны быть реализованы вместе для согласованности?
наблюдаемое поведение: < /p> ожидаемое поведение: [/b]

Если оператор in возвращает false для 'secret' , доступ к proxy.secret должен выбросить ошибку или вернуть Undefined .
попытки исправить:
  • Пробовал только с помощью trap. < br/>
  • Исследуют другие ловушки, такие как Get и ownkeys , но не уверены, как их координировать.


Подробнее здесь: https://stackoverflow.com/questions/794 ... roperty-is

Вернуться в «Javascript»