Почему оператор возвращает 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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