Я пытаюсь переопределить точечную нотацию для доступа к localStorage. я уже успел перекрыть GetItem и методы SetItem, как описано здесь: Is it possible to override Local Storage and Session Storage separately in HTML5?Переопределить точечную нотацию для localStorage
Теперь я попытался создать прокси-сервер также поймать доступ точки, но так как я, кажется, не в состоянии переписать объект LocalStorage, как пытался здесь
localStorage = new Proxy(localStorage, {
get: function(target, name) {
if (!(name in target)) {
console.log("Getting non-existent property '" + name + "'");
return undefined;
}
return '123';
},
set: function(target, name, value) {
if (!(name in target)) {
console.log("Setting non-existent property '" + name + "', initial value: " + value);
}
target[name] = value;
}
});
Теперь, когда я пытаюсь это я все еще получаю тест вместо 123:
localStorage.testKey = "test";
alert(localStorage.testKey)
Прокси-объект не может иметь то же имя, что и объект, который он виртуализирует. На самом деле ваши методы 'get' /' set' не вызывались. Попробуйте добавить вызов console.log в каждом методе (вне 'if'), и вы увидите. – hindmost
Я знаю, что мои методы не вызываются, вопрос в том, есть ли способ получить их по имени –
_whe есть какой-либо способ их вызова. Используйте другое имя/идентификатор для прокси-объекта (все, кроме 'localStorage'). – hindmost