sessionStorage не хранит оригинальный объект
У меня есть объект, который я получаю, выполняя функцию SDK. Когда я пытаюсь сохранить объект в хранилище сеанса и извлечь объект, извлеченный объект выглядит так же, как оригинальный, но когда я выполняю операции над новым объектом, я получаю ошибку.
var xyzObject = some_function();
sessionStorage.setItem("xyzObject",xyzObject);
var obj = JSON.parse(sessionStorage.getItem("xyzObject"));
obj.some_other_function();
Он показывает ошибку, так как obj.some_other_function не является функцией. Тогда как xyzObject.some_other_function работает отлично.
4 ответа
Пытаться
sessionStorage.setItem('xyzObject', JSON.stringify(xyzObject);
И получить с помощью:
JSON.parse(sessionStorage.getItem('xyzObject'));
Вы не можете сохранить объект в sessionStorage или localStorage. Единственный возможный метод состоит в том, чтобы упорядочить объект и сохранить его в sessionStorage и при получении объекта из sessionStorage вы просто анализируете объект в JSON.
var xyzObject = some_function();
sessionStorage.setItem("xyzObject",JSON.stringify(xyzObject));
var stringData = sessionStorage.getItem("xyzObject");
var obj = JSON.parse(stringData);
obj.some_other_function();
sessionStorage хранит только строки в качестве значений.
Если вы хотите сохранить объект в sessionStorage, вы должны преобразовать объект в строку JSON, используяJSON.stringify()
метод.
const xyzObject = { name: "Juan" };
sessionStorage.setItem("xyzObject", JSON.stringify(xyzObject);
Затем, если вы хотите прочитать сохраненную строку JSON, вы должны проанализировать ее в объект JavaScript (или значение, массив и т. д.), используяJSON.parse()
метод.
const xyzObjectRetrieved = JSON.parse(sessionStorage.get("xyzObject"));
// it should equal { name: "Juan" }
Источник:
sessionStorage
хранит пары ключ-значение, которые являются строками. Итак, всякий раз, когда ваш
sessionStorage.setItem("xyzObject",xyzObject);
строка выполняется, ключxyzObject
вставляется вsessionStorage and a string is stored as a value. Since
xyzObject` — это объект, он преобразуется в строку. Давайте преобразуем объект в строку и посмотрим, что произойдет:
Как видите, когда он преобразован в строку, он все еще не имеет функции, но, тем не менее, мы можем реконструировать объект, разобрав его в JSON и добавив функции. Так что вашиsome_function
должен быть изменен, чтобы принять объект и любые элементы данных, которые он имеет, он должен гарантировать, что результирующий объект будет соответствовать им, и функции будут добавлены.