我一直在使用 localStorage,我遇到了一个问题:
使用setItem
andgetItem
方法而不是:
设置项目:localStorage.myKey = "myValue"; 获取项目:localStorgae.myKey --> 返回“myValue”
那么它们只是辅助方法吗?好的做法?
只是好奇谢谢。
我一直在使用 localStorage,我遇到了一个问题:
使用setItem
andgetItem
方法而不是:
设置项目:localStorage.myKey = "myValue"; 获取项目:localStorgae.myKey --> 返回“myValue”
那么它们只是辅助方法吗?好的做法?
只是好奇谢谢。
HTML5 存储基于命名的键/值对。您基于命名键存储数据,然后您可以使用相同的键检索该数据。命名键是一个字符串。数据可以是 JavaScript 支持的任何类型,包括字符串、布尔值、整数或浮点数。但是,数据实际上存储为字符串。如果要存储和检索字符串以外的任何内容,则需要使用 parseInt() 或 parseFloat() 等函数将检索到的数据强制转换为预期的 JavaScript 数据类型。
interface Storage {
getter any getItem(in DOMString key);
setter creator void setItem(in DOMString key, in any data);
};
使用已存在的命名键调用 setItem() 将默默地覆盖先前的值。使用不存在的键调用 getItem() 将返回 null 而不是抛出异常。
与其他 JavaScript 对象一样,您可以将 localStorage 对象视为关联数组。您可以简单地使用方括号,而不是使用 getItem() 和 setItem() 方法。例如,这段代码:
var foo = localStorage.getItem("bar");
// ...
localStorage.setItem("bar", foo);
…可以改写为使用方括号语法:
var foo = localStorage["bar"];
// ...
localStorage["bar"] = foo;
也许这个希望。:D
set
/getItem
比属性访问更好,原因如下:
localStorage
将其所有输入强制转换为字符串,但您可以覆盖set
/getItem
方法以执行序列化和反序列化以支持字符串以外的类型:
var basicSetItem = localStorage.setItem;
localStorage.setItem = function(key, val) {
basicSetItem.call(localStorage, key, JSON.stringify(val));
}
var basicGetItem = localStorage.getItem;
localStorage.getItem = function(key) {
return JSON.parse(basicGetItem.call(localStorage, key));
}
使用 ECMAScript 5 API 无法为所有存储属性值实现同等效果。
您无法设置存储密钥length
,也无法访问密钥getItem
、setItem
或removeItem
不使用功能访问:
localStoage.length = "foo"; // does not work
localStoage.setItem("length", "foo"); // works
var bar = localStoage.setItem; // gets the `setItem` function
var bar = localStorage.getItem("setItem"); // gets the value stored in the `setItem` key