考慮以下代碼:爲什麼我在localStorage中設置的與我所得到的不一樣?
myObj = new BackboneModel({'a_key': {'c_key': c_val, 'd_key': d_val}, 'b_key': b_value});
localStorage.setItem('myObj', myObj);
現在,如果我使用Chrome開發者工具來檢查我得到這個數據:
> myObj
r {cid: "c1", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}
> localStorage
Storage {myObj: "[object Object]"}
> myObj.get('a_key')
Object {c_key: Object, d_key: Object}
> localStorage.getItem('myObj')
"[object Object]"
即)我不明白我的設置...
我是否正確使用localStorage?
我怎樣才能得到我所設定的?
注:我認爲我的backbone.js模型的細節在這裏是不相關的。
解決
// Set
var objDict = {'a_key': {'c_key': c_val, 'd_key': d_val}, 'b_key': b_value};
myObj = new BackboneModel(objDict);
localStorage.setItem('myObj', objDict);
...
// Get
var objDict = JSON.parse(localStorage.getItem('myObj'));
myObj = new BackboneModel(objDict);
'localStorage'只能存儲字符串,所以你的對象被轉換成它的'.toString()'值,它是''[object Object]''。這與alert(myObj);'時發生的事情是一樣的。你需要序列化你的對象來存儲它。 「JSON」通常適用於此,具體取決於數據的性質。 – 2013-05-22 12:10:02