Т.к. сохраняемые данные автоматически преобразуются в текст, то перед выводом, если мы хотим получить число, данные нужно преобразовать с помощью функции Number():
var value = Nubmer(sessionStorage[keyword]);
При преобразовании типов, следует проявлять осторожность. Для некоторых типов данных существуют удобные процедуры преобразования, но например, если мы сохранили следующую дату:
var today = new Date();
Этот код сохранит не объект даты, а текстовую стоку. Например, Sat Jun 2013 13:30:46. К сожалению, не существует легкого способа преобразования этого текста обратно в дату.
Чтобы решить эту проблему, мы должны явно преобразовать дату в текст, а потом выполнить обратное преобразование.
var today = new Date(); sessionStorage['session_started'] = today.getFullYear() + “/” + today.getMonth() + “/” + today.getDate(); … today = new Date(sessionStorage['session_started']); alert(today.getFullYear);
В результате выполнения этого кода, появится окно сообщения, подтверждающее успешное восстановление объекта даты.
Сохранение объектов
Для того, чтобы сохранить объект, необходимо его преобразовать в текст. Существует стандартный способ, позволяющий это делать, называемый кодированием JSON.
Создадим функцию PersonalityScore:
function PersonalityScore(o, c, e, a, n){ this.openness = o; this.cons = c; this.extraversion = e; this.agreeable = a; this.neuroticism = n; }
Создаем объект PersonalityScore
var score = new PersonalityScore(o, c, e, a, n);
Для преобразования объекта в формат JSON, вызовем метод JSON.stringify().
sessionStorage['personalityScore'] = JSON.stringify(score);
Для обратного преобразования, воспользуемся методом JSON.parse:
var scope = JSON.parse(sessionStorage);
Если мы собираемся сохранять большие объемы данных и на длительное время, то необходимо использовать объект localStorage. При этом, решение о том, требуется ли информация, хранящаяся в объекте или нет, принимает сам пользователь.
Система localStorage использует такой же интерфейс, что и sessionStorage. Поэтому, для localStorage можно использовать те же методы и свойства, которые мы использовали ранее. Придется внести единственное изменение: заменить префикс session префиксом local.
localStorage.setItem(keyword, value);