`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。请记住,它的行为确实与 getItemin 不同,因为它返回布尔值并且不会遍历原型链。

【讨论】:

【参考方案2】:

您应该使用getItem(prop) !== null 测试,因为in 无法区分存储在localStorage 中的值与该对象的不可枚举属性(或从其原型链继承的属性)。

一个很好的例子是'getItem' in localStorage === true

【讨论】:

以上是关于`localStorage 中的 prop` 与 `localStorage.getItem('prop')!==null`的主要内容,如果未能解决你的问题,请参考以下文章

如何在 react.js 中收听 localstorage

React 获取路由信息

LocalStorage 更新元素导致与 JQuery 中的 JSON 重复

cookiessessionStorage与localStorage在Vue中的使用

循环和搜索 localStorage 中的所有项目

Cookie, LocalStorage 与 SessionStorage