`prop in localStorage` vs`localStorage.getItem('prop')!== null`

时间:2015-06-06 20:06:52

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

this问题的答案建议:

localStorage.getItem('prop') !== null

但是,我想保持我的代码一致,我想使用:

'prop' in localStorage

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

2 个答案:

答案 0 :(得分:4)

这种区别在于the in operator将走原型链,但getItem只返回对象本身的数据集。

所以类似这样的东西总会返回true,即使你从未按该键设置项目:

'toString' in localStorage

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

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

答案 1 :(得分:1)

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

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