SessionStorage e LocalStorage permitem salvar pares de chave / valor em um navegador da web. O valor deve ser uma sequência e salvar objetos js não é trivial.
var user = {'name':'John'};
sessionStorage.setItem('user', user);
var obj = sessionStorage.user; // obj='[object Object]' Not an object
Atualmente, você pode evitar essa limitação serializando objetos para JSON e desserializando-os para recuperar os objetos. Mas a API de armazenamento sempre passa pelos métodos setItem
e getItem
.
sessionStorage.setItem('user', JSON.stringify(user));
var obj = JSON.parse(sessionStorage.getItem('user')); // An object :D
Posso evitar essa limitação?
Eu só quero executar algo como isto:
sessionStorage.user.name; // 'John'
sessionStorage.user.name = 'Mary';
sessionStorage.user.name // 'Mary'
Eu tentei os métodos defineGetter
e defineSetter
para interceptar as chamadas, mas é um trabalho tedioso, porque tenho que definir todas as propriedades e meu objetivo é não conhecer as propriedades futuras.