2016-11-07 67 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存储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/zh-CN/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

上面已经实现..仍然物体不一样.. –