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