最佳答案
SessionStorage 和 LocalStorage 允许在 Web 浏览器中保存键/值对。这个值必须是一个字符串,而保存 js 对象并非易事。
var user = {'name':'John'};
sessionStorage.setItem('user', user);
var obj = sessionStorage.user; // obj='[object Object]' Not an object
现在,您可以通过将对象序列化为 JSON,然后反序列化它们来恢复对象来避免这种限制。但是 StorageAPI 总是通过 setItem
和 getItem
方法。
sessionStorage.setItem('user', JSON.stringify(user));
var obj = JSON.parse(sessionStorage.getItem('user')); // An object :D
我可以避免这个限制吗?
我只是想执行这样的东西:
sessionStorage.user.name; // 'John'
sessionStorage.user.name = 'Mary';
sessionStorage.user.name // 'Mary'
我已经尝试使用 defineGetter
和 defineSetter
方法来拦截调用,但这是一项乏味的工作,因为我必须定义所有属性,而我的目标是不知道将来的属性。