20.1. Объекты localStorage и sessionStorage
Броузеры, реализующие положения проекта спецификации «Web Storage», определяют в объекте Window два свойства: localStorage и sessionStorage. Оба свойства ссылаются на объект Storage - постоянно хранимый ассоциативный массив, отображающий строковые ключи в строковые значения. Объекты Storage действуют подобно обычным объектам в языке JavaScript: достаточно просто присвоить свойству объекта строку, и броузер автоматически сохранит ее. Разница между localStorage и sessionStorage заключается лишь в сроке хранения и области видимости: они определяют, как долго будут храниться данные и кому они будут доступны.
Ниже мы подробнее поговорим о сроке хранения и области видимости. А пока рассмотрим несколько примеров. Следующий фрагмент использует свойство localStorage, но он точно так же мог бы работать и со свойством sessionStorage:
var name = localStorage.username; // Получить сохраненное значение.
name = localStorage["username"]; // Эквивалентная форма обращения, как к массиву
if (!name) {
name = prompt("Как вас зовут?"); // Задать пользователю вопрос.
localStorage.username = name; // Сохранить ответ.
}
// Выполнить итерации по всем хранящимся парам имя/значение
for(var name in localStorage) { // Итерации по всем хранящимся именам
var value = localStorage[name]; // Получить значение для каждого из них
}
Объекты Storage также определяют методы для сохранения, извлечения и удаления данных. Эти методы рассматриваются в разделе 20.1.2.
Проект спецификации «Web Storage» определяет возможность сохранения структурированных данных (объектов и массивов), а также простых значений и данных встроенных типов, таких как даты, регулярные выражения и даже объекты File. Однако на момент написания этих строк броузеры позволяли сохранять только строки. Если потребуется сохранять и извлекать данные других типов, их можно кодировать и декодировать вручную. Например:
// При сохранении числа оно автоматически преобразуется в строку.
// Не забудьте выполнить обратное преобразование при извлечении из хранилища.
localStorage.х = 10;
var х = parseInt(localStorage.х);
// Преобразовать объект Date в строку при записи и обратно - при чтении
localStorage.lastRead = (new Date()).toUTCString();
var lastRead = new Date(Date.parse(localStorage.lastRead));
// Для кодирования любых простых или структурированных данных удобно
// использовать формат JS0N
localStorage.data = JSON.stringify(data); // Закодировать и сохранить
var data = JSON.parse(localStorage.data); // Извлечь и декодировать.
Больше книг — больше знаний!
Заберите 30% скидку новым пользователям на все книги Литрес с нашим промокодом
ПОЛУЧИТЬ СКИДКУ