我正在对 HTML5 中的本地存储进行一些测试。注意我使用的是 Safari 6.0.2,因为似乎许多 Web 引擎处理它们的方法不同。
如果我这样做:
localStorage.setItem('subTotal', Number(12345)); // I know, it's redundant :)
var varType = typeof localStorage.getItem('subTotal');
alert(varType);
你现在会想;这是一个数字!但不,事实并非如此。似乎,即使使用类型转换,HTML5 本地存储在插入变量时也会将所有变量类型转换为字符串。这很有趣,因为使用开发工具时,它显示引号之间的字符串值,但不显示数字。也许是检查器窗格删除了引号。
我在 jQuery 中已经有一个旧的自动 typeCasting 函数,但我总是对这些情况感到厌倦,因为 0 和 false 仍然会把事情弄得一团糟。
有人知道 localStorage.* 库是否有维护变量类型的设置?
您应该首先将它们转换为 JSON:
localStorage.setItem( 'subTotal', JSON.stringify(12345) );
然后,在检索项目时,解析 JSON:
JSON.parse( localStorage.getItem('subTotal') );
这是小提琴:http://jsfiddle.net/hD9dF/ http://jsfiddle.net/hD9dF/
为了更方便使用,创建您自己的包装器:
var myLocalStorage = {
set: function (item, value) {
localStorage.setItem( item, JSON.stringify(value) );
},
get: function (item) {
return JSON.parse( localStorage.getItem(item) );
}
};
这是小提琴:http://jsfiddle.net/hD9dF/1/ http://jsfiddle.net/hD9dF/1/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)