2016-09-20 24 views
-1

我試圖將一些數據保存到localStorage在一個包含對象中。如果我只是使用JavaScript變量,我這樣做:設置一個空的localStorage對象導致「[object Object]」

var obj = obj || {}; 
obj.fname = 'bob'; 
console.log(obj.fname) // => "bob" 

但是試圖做到這一點在localStorage

window.localStorage.obj = window.localStorage.obj || {} 
window.localStorage.obj.fname = 'bob'; 
console.log(window.localStorage.obj.fname) // => "[object Object]" 

爲什麼不會爲了localStorage同樣的技術工作?有沒有辦法做到這一點?所以你需要

window.localStorage.obj = JSON.stringify({fname: 'bob});

然後閱讀,你需要解析回去,這樣

var obj = JSON.parse(window.localStorage.obj); console.log(obj.fname);

+7

'localStorage'只能存儲字符串設置它在obj鍵之前呼籲{fname: 'bob'}JSON.stringify,所以你必須序列化對象,例如使用'JSON.stringify'。 – redneb

+0

你真的讀過他的評論嗎? @redneb發佈這個答案 –

回答

3

你必須字符串化的對象和存儲

2

的localStorage只能存儲純字符串它在本地存儲。 然後,當你需要它時,你必須使用JSON.parse json字符串。

var obj = { 
    b : 2 
}; 
window.localStorage.obj = JSON.Stringify(obj); 
var returnObj = JSON.parse(window.localStorage.obj); 
1

正如在this中提到的答案,一切都以字符串格式存儲在localstorage中。因此,在您的情況下,toString方法在您的obj被調用之前被調用。應避免在一些密鑰下設置完成本地存儲中的對象。嘗試使用localstorage.setItem('fname', 'bob')在localStorage的下一個關鍵fname設定值bob或在localStorage的

相關問題