【问题标题】:`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

第二种形式有什么问题吗?就速度而言,它应该快一点。

【问题讨论】:

    标签: javascript html object local-storage javascript-objects


    【解决方案1】:

    这个区别在于the in operator 会遍历原型链,而getItem 只会返回对象本身的数据集。

    所以这样的东西总是会返回true,即使你从来没有用那个键设置过项目:

    'toString' in localStorage
    

    这可能不是预期的行为,因此在这种情况下您可能希望避免它。

    获得更一致代码的一种方法是使用the hasOwnProperty method。此方法适用于所有对象,包括localStorage。请记住,它的行为确实与 getItemin 不同,因为它返回布尔值并且不会遍历原型链。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2023-04-07
        • 1970-01-01
        • 2020-08-27
        • 2016-04-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多