的正确的方式来处理本地存储是使用Storage API,其中包括setItem
,getItem
和removeItem
的方法 - 这样做instea直接财产访问的d。使用API可以在本地存储器垫片上的各个浏览器(如果支持的话)上可靠地工作和。
(下面显示了API的工作;如果有错误,要注意准确什么它说。)
localStorage.clear(); // reset for examples
localStorage.setItem("data", "hi!")
localStorage.length // -> 1
localStorage.getItem("data") // -> "hi!"
localStorage.setItem("data", null) // set value to null
localStorage.length // -> 1 (key NOT removed!)
localStorage.getItem("data") // -> null
localStorage.removeItem("data") // remove key
localStorage.length // -> 0 (key really WAS removed!)
localStorage.getItem("data") // -> null
另一个原因使用上述API是localStorage.setItem("getItem", "foo")
不会打破下一个使用localStorage.getItem
作为存储键/值对和存储对象属性保持明显不同。
在浏览器(和或许其他地方),该delete
操作者,这从正常JavaScript对象中删除属性, “工程”。我做不是出于各种原因推荐或使用这种速记。
- 它不是不讨论/由W3C API在所有
- 它混淆的JS特性和底层模型所定义;考虑
localStorage['getItem']
和变型,上述
- 所讨论它不能和不工作了垫片
例,在任何情况下:如果你想删除
localStorage["data"] = "hi!"
localStorage.getItem("data") // -> "hi!"
localStorage["data"] // -> "hi!"
localStorage.hasOwnProperty["data"] // -> true (exposed property in Chrome)
delete localStorage["data"]
localStorage.getItem("data") // -> null
localStorage["data"] // -> undefined
localStorage.hasOwnProperty["data"] // -> false (property is gone)
见Deleting from localStorage: should I use delete or .removeItem?
'localStore.removeItem(“数据”)' – tymeJV
只能替换本地存储的内容;不要删除它 – 2014-02-21 23:57:24
@ aliasm2k:当然你可以删除它。 –