SessionStorage y LocalStorage permite guardar pares clave / valor en un navegador web. El valor debe ser una cadena y guardar objetos js no es trivial.
var user = {'name':'John'};
sessionStorage.setItem('user', user);
var obj = sessionStorage.user; // obj='[object Object]' Not an object
Hoy en día, puede evitar esta limitación al serializar objetos en JSON y luego deserializarlos para recuperar los objetos. Pero la API de almacenamiento siempre pasa por los métodos setItem
y getItem
.
sessionStorage.setItem('user', JSON.stringify(user));
var obj = JSON.parse(sessionStorage.getItem('user')); // An object :D
¿Puedo evitar esta limitación?
Solo quiero ejecutar algo como esto:
sessionStorage.user.name; // 'John'
sessionStorage.user.name = 'Mary';
sessionStorage.user.name // 'Mary'
He intentado los métodos defineGetter
y defineSetter
para interceptar las llamadas, pero es un trabajo tedioso, porque tengo que definir todas las propiedades y mi objetivo es no conocer las propiedades futuras.