`localStorage 中的 prop` 与 `localStorage.getItem('prop')!==null`
Posted
技术标签:
【中文标题】`localStorage 中的 prop` 与 `localStorage.getItem(\'prop\')!==null`【英文标题】:`prop in localStorage` vs `localStorage.getItem('prop')!==null``localStorage 中的 prop` 与 `localStorage.getItem('prop')!==null` 【发布时间】:2015-08-21 14:48:51 【问题描述】:this问题的答案推荐:
localStorage.getItem('prop') !== null
但是,我想保持我的代码一致并且我想使用:
'prop' in localStorage
第二种形式有什么问题吗?就速度而言,它应该快一点。
【问题讨论】:
【参考方案1】:这个区别在于the in
operator 会遍历原型链,而getItem
只会返回对象本身的数据集。
所以这样的东西总是会返回true
,即使你从来没有用那个键设置过项目:
'toString' in localStorage
这可能不是预期的行为,因此在这种情况下您可能希望避免它。
获得更一致代码的一种方法是使用the hasOwnProperty
method。此方法适用于所有对象,包括localStorage
。请记住,它的行为确实与 getItem
和 in
不同,因为它返回布尔值并且不会遍历原型链。
【讨论】:
【参考方案2】:您应该使用getItem(prop) !== null
测试,因为in
无法区分存储在localStorage
中的值与该对象的不可枚举属性(或从其原型链继承的属性)。
一个很好的例子是'getItem' in localStorage === true
【讨论】:
以上是关于`localStorage 中的 prop` 与 `localStorage.getItem('prop')!==null`的主要内容,如果未能解决你的问题,请参考以下文章
LocalStorage 更新元素导致与 JQuery 中的 JSON 重复