this问题的答案建议:
localStorage.getItem('prop') !== null
但是,我想保持我的代码一致,我想使用:
'prop' in localStorage
第二种形式有什么问题吗?就速度而言,速度应该快得多。
答案 0 :(得分:4)
这种区别在于the in
operator将走原型链,但getItem
只返回对象本身的数据集。
所以类似这样的东西总会返回true
,即使你从未按该键设置项目:
'toString' in localStorage
这可能不是预期的行为,因此在这种情况下您可能希望避免使用它。
使用the hasOwnProperty
method可以获得更一致的代码的一种方法。此方法适用于所有对象,包括localStorage
。请记住,它的行为与getItem
和in
的行为不同,因为它返回布尔值并且不会遍历原型链。
答案 1 :(得分:1)
您应该使用getItem(prop) !== null
测试,因为in
无法区分localStorage
中存储的值与该对象的非可枚举属性(或从其原型链继承的属性)。
一个很好的例子就是'getItem' in localStorage === true