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
методи перехоплення викликів, але його копітка робота, тому що я повинен визначити всі властивості, і моя мета - не знати майбутніх властивостей.