Сохранение объектов Javascript в sessionStorage

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 для перехвата вызовов, но это утомительная работа, потому что я должен определить все свойства, и моя цель - не знать будущих свойств.

140
задан Nicu Surdu 14 February 2017 в 13:42
поделиться