写localStorage['key'] = value
或localStorage.setItem('key', value)
?
我看到this question标记为重复,但在开发人员工具中,两种符号的行为都不同:括号表示法似乎没有序列化为字符串。
例如:
> localStorage['key'] = [1,2,3]
[1, 2, 3]
> localStorage.setItem('other', [4,5,6])
undefined
> localStorage.key
[1, 2, 3]
> localStorage.other
"4,5,6"
> localStorage.key.length
3
> localStorage.other.length
5
任何人都可以解释这种行为上的差异吗?我可以使用括号表示法而忘记总是序列化为JSON吗?
答案 0 :(得分:1)
一般情况下,请参阅localStorage - use getItem/setItem functions or access object directly? - 您可以使用与getItem
/ setItem
相同的属性。两种方式都会自动对值进行字符串化。
除非......
您正在使用其中一个predefined methods'名称,例如.key()
。这就是要求麻烦。
.key
时返回该字符串。 localStorage
对象上的方法。不会发生字符串化,您只需获得放在那里的对象。它不会被存储。
> localStorage.key
function(){ … }
> localStorage.key = [1,2,3]
[1,2,3] // the rvalue
Opera> localStorage.key
"1,2,3"
Opera> localStorage.length
1
Chrome> localStorage.key
[1,2,3]
Chrome> localStorage.length
0