localStorage.getItem('item')与localStorage.item之间的区别是什么?

3

localStorage.getItem('item')和localStorage.item之间有什么区别?在访问localStorage中的项目时,这两种方法之间是否存在性能差异?

像这样访问localStorage中的项目:var i = localStorage.item比getItem函数调用更快吗?


1
请翻译以下与编程有关的内容从英语到中文。仅返回翻译后的文本:如果您没有使用getItemsetItem和其他存在于localStorage上的键,则没有区别。 - Andrei
localStorage.getItem('item')比localStorage.item或localStorage['item']更好吗? - Nick Parsons
@Andrei,如果两者没有区别,那么为什么我应该使用长的getitem('i')版本而不是.i? - Gurami Nikolaishvili
@GuramiNikolaishvili 谁说你应该这样做了?阅读我的答案,它是由[HTML]标准支持的,不要只听意见。"通过Stack Overflow编程"是导致为什么许多网页,其中一些曾经以高价易手,现在却如此破碎的原因之一。出于一个很好的原因,我们今天有了_标准委员会_,制定规范来_指定_Web浏览器的行为,以防止人们弄错事实,让他们从正确的来源获取信息,并相应地进行编程。 - Armen Michaeli
2个回答

0

关于 localStorage.item 没有任何相关内容,正确的写法应该是 localStorage.getItem('itemname')localStorage.setItem('itemname' , value) 以及 localStorage.clear()


为什么我应该使用localStorage.getItem('itemname')而不是localStorage.itemname? - Gurami Nikolaishvili
你可以使用localStorage.itemname,没有什么比它更好了。 - Lucifer

0

HTML标准指定了getItem方法的定义如下:

  1. 如果thismap[key]不存在,则返回null。
  2. 返回thismap[key]。

Storage接口定义下方,有以下内容解释了map是什么:

一个Storage对象有一个关联的:

map
存储代理映射。

然后是这个:

一个 Storage 对象存储的 支持的属性名称 是在 storage 的 映射 上运行 get the keys 的结果。

这至少证实了使用 getItem 和属性访问两者都归结为访问映射以获取对应于键的值--这意味着对于给定的键,getItem 方法和属性访问确实使用相同的过程来获得相同的值。

这也可以从接口规范中更接近 Storage 的 [非规范性] 注释中得出:

value = storage.getItem (key)
value = storage[key]

返回与给定键关联的当前值;如果给定键不存在,则返回 null。

我引用的“HTML标准”可从Mozilla开发者网络关于 Storage 等其他页面链接中找到,本身可以通过谷歌搜索 localStorage 来发现。建议您将 Mozilla 开发者网络站点添加为收藏夹并将其作为搜索引擎,以便快速发现您使用的 Web API 上的相关重要信息。但不要把 MDN 当成理所当然--如果有疑问或习惯性地寻找相关标准,看看是否可以阅读实际规范以消除所有疑虑。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接