SessionStorage e LocalStorage consente di salvare coppie chiave / valore in un browser Web. Il valore deve essere una stringa e il salvataggio di oggetti js non è banale.
var user = {'name':'John'};
sessionStorage.setItem('user', user);
var obj = sessionStorage.user; // obj='[object Object]' Not an object
Al giorno d'oggi, è possibile evitare questa limitazione serializzando gli oggetti su JSON e quindi deserializzandoli per ripristinare gli oggetti. Ma l'API di archiviazione passa sempre attraverso i metodi setItem
e getItem
.
sessionStorage.setItem('user', JSON.stringify(user));
var obj = JSON.parse(sessionStorage.getItem('user')); // An object :D
Posso evitare questa limitazione?
Voglio solo eseguire qualcosa del genere:
sessionStorage.user.name; // 'John'
sessionStorage.user.name = 'Mary';
sessionStorage.user.name // 'Mary'
Ho provato i metodi defineGetter
e defineSetter
per intercettare le chiamate ma è un lavoro noioso, perché devo definire tutte le proprietà e il mio obiettivo non è conoscere le proprietà future.