Рассмотрим этот код:Почему это то, что я установил в 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]"
Ie) Я не понимаю, что я поставил ...
Я использую localStorage неправильно?
Как я могу получить то, что я установил?
NB: Я думаю, что детали моей модели 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]" '. Это то же самое, что происходит, когда вы предупреждаете (myObj); '. Вам нужно сериализовать свой объект, чтобы его сохранить. 'JSON' часто подходит для этого, в зависимости от характера данных. –