2016-11-07 2 views
1

У меня есть объект, который я получаю, выполняя функцию SDK. Когда я пытаюсь сохранить объект в хранилище сеансов и получить объект, полученный объект будет выглядеть так же, как и оригинал, но когда я выполняю операции над новым объектом, я получаю ошибку.sessionStorage не сохраняет исходный объект

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 работает отлично.

+0

код [Web Storage API] (https://developer.mozilla.org/en-US/docs/Web/API/Storage) поддерживает только строки: [ 'storage.setItem (KEYNAME, KeyValue)' ] (https://developer.mozilla.org/en-US/docs/Web/API/Storage/setItem), где 'keyName' и' keyValue' являются ['DOMString'] (https://developer.mozilla.org/ru-US/docs/Web/API/DOMString) s – Andreas

+0

Попробуйте JSON.stringify при сохранении объекта. Вы можете хранить его только как строку. – juju

ответ

1

Попробуйте

sessionStorage.setItem('xyzObject', JSON.stringify(xyzObject); 

И получить с помощью:

JSON.parse(sessionStorage.getItem('xyzObject')); 
+0

Я использую только реализацию выше. –

1

Вы не можете сохранить объект в 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(); 
+0

уже реализован выше .. все еще объекты не такие же .. –