2016-11-07 71 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

上面已經實現..仍然物體不一樣.. –