2

可能重复:
JavaScript 属性访问:点符号与括号?

我是 chrome 扩展的新手。我知道 Java,但 Javascript 是完全不同的东西。

我想问 和 有什么localStorage["something"]区别localStorage.something

方括号与点。

4

1 回答 1

5

没有区别。事实上,在 JavaScript 中这两种语法整体上并没有什么区别:

someObj.someProp === somObj["someProp"];

唯一的区别是某些字符在字符串中有效,在点属性名称中无效:

someObj["some-prop"] // valid
someObj.some-prop // this is actually the value of `someObj.some` minus the value of `prop`

请注意,这两种存储值的方法localStorage也与使用.getItemand.setItem方法相同。根据W3C 规范

每个 Storage 对象都提供对键/值对列表的访问,这些键/值对有时称为items

这些项目可以通过同名的对象属性或通过使用.getItem和的名称引用它们来访问和可变.setItem。唯一的区别是可以覆盖函数以提供包装,例如,在存储之前对对象进行 JSON 化:

localStorage.setItem = function(key, val) {
    localStorage[key] = JSON.stringify(val);
}
于 2012-08-23T16:35:09.163 回答