Почему ассоциативные массивы не работают в localStorage [""]?

Например, у меня есть следующий код:

  localStorage["screenshots"] = new Array();
  localStorage["screenshots"]["a"] = 9;
  alert(localStorage["screenshots"]["a"]);

  Arr = new Array();
  Arr["screenshots"] = new Array();
  Arr["screenshots"]["a"] = 9;
  alert(Arr["screenshots"]["a"]);

(Я использую Google Chrome v9.0.597.107 в 32-разрядной версии Windows Vista)

Но работает только вторая часть (вывод alert() - это "a" )! Первое предупреждение выводится контрастом "undefined"!

В чем проблема?

Спасибо.

Ответ 1

localStorage хранит значения как строки, поэтому вам нужно, чтобы JSON сериализовал ваши объекты по пути и десериализовал их на выходе. Например:

var data = {'A': 9};

localStorage['screenshots'] = JSON.stringify(data);

// Later/elsewhere:

var data = JSON.parse(localStorage['screenshots']);

// 9
console.log(data.A);

Ответ 2

Объект localStorage может хранить только строки. Чтобы хранить другие типы данных, используйте их, чтобы преобразовать их в строки и преобразовать их обратно при извлечении. В большинстве случаев вы хотели бы использовать JSON для этого.

Ответ 3

Локальное хранилище только хранит строковые ключи и строковые значения.

Механизм хранения DOM - это средство, с помощью которого пары строковых ключей/значений могут быть надежно сохранены и впоследствии извлечены для использования.

Источник: MDC.