SessionStorage и LocalStorage позволяют сохранять пары ключ/значение в веб-браузере. Значение должно быть строкой, и сохранение объектов js не является тривиальным.
var user = {'name':'John'};
sessionStorage.setItem('user', user);
var obj = sessionStorage.user; // obj='[object Object]' Not an object
В настоящее время вы можете избежать этого ограничения, сериализируя объекты в JSON, а затем десериализовать их для восстановления объектов. Но API-хранилище всегда проходит через методы 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
для перехвата вызовов, но это утомительная работа, потому что я должен определить все свойства, а моя цель - не знать будущих свойств.