设置一个空的localStorage对象会导致“[object Object]”

时间:2016-09-20 18:46:40

标签: javascript html5 local-storage

我正在尝试将某些数据保存到包含对象中的>>> import kombu >>> from kombu import Connection, Exchange, Queue, Producer Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python2.7/site-packages/kombu/__init__.py", line 81, in __getattr__ module = __import__(object_origins[str(name)], None, None, [str(name)]) File "/usr/local/lib/python2.7/site-packages/kombu/connection.py", line 15, in <module> from kombu import exceptions File "/usr/local/lib/python2.7/site-packages/kombu/exceptions.py", line 6, in <module> from amqp import ChannelError, ConnectionError, ResourceError File "/usr/local/lib/python2.7/site-packages/amqp/__init__.py", line 48, in <module> from .basic_message import Message # noqa File "/usr/local/lib/python2.7/site-packages/amqp/basic_message.py", line 29, in <module> from .serialization import GenericContent File "/usr/local/lib/python2.7/site-packages/amqp/serialization.py", line 33, in <module> from .exceptions import FrameSyntaxError File "/usr/local/lib/python2.7/site-packages/amqp/exceptions.py", line 264, in <module> str(_method_name) TypeError: Struct() argument 1 must be string, not unicode 。如果我只是使用javascript变量,我会这样做:

localStorage

但是尝试在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]" ?有没有办法做到这一点?

3 个答案:

答案 0 :(得分:3)

您必须对对象进行字符串化并将其存储在localstorage中。 然后当你需要它时,你必须JSON.parse json字符串。

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

答案 1 :(得分:2)

localStorage只能存储普通字符串,因此您需要

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

然后阅读,你需要解析它,所以

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

答案 2 :(得分:1)

enter image description here中所述,答案中的所有内容都以字符串格式存储在localstorage中。因此,在您的情况下,obj方法会在bob设置之前被调用。应避免在某些键下在localstorage中设置完成对象。尝试使用fname在localstorage中的密钥localstorage.setItem('fname', 'bob')下设置值JSON.stringify,或在{fname: 'bob'}上调用obj,然后在{{1}}密钥中进行设置在localstorage中