localStorage.property vs localStorage ['property']

时间:2014-07-17 12:01:00

标签: javascript google-chrome local-storage developer-tools web-storage

localStorage['key'] = valuelocalStorage.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吗?

1 个答案:

答案 0 :(得分:1)

一般情况下,请参阅localStorage - use getItem/setItem functions or access object directly? - 您可以使用与getItem / setItem相同的属性。两种方式都会自动对值进行字符串化。

除非......
您正在使用其中一个predefined methods'名称,例如.key()。这就是要求麻烦。

  • Opera和Firefox会将值存储在localStorage中,并在随后访问.key时返回该字符串。
  • 另一方面,
  • Chrome会覆盖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