我正在为HTML5中的本地存储进行一些测试.注意我使用的是Safari 6.0.2,因为似乎很多Web引擎处理它们的方法不同.
如果我这样做:
localStorage.setItem('subTotal', Number(12345)); // I know, it's redundant :)
var varType = typeof localStorage.getItem('subTotal');
alert(varType);
Run Code Online (Sandbox Code Playgroud)
你现在想; 这是一个数字!但不,它不是..即使使用类型转换,HTML5本地存储似乎在插入时将所有变量类型转换为字符串.这很有趣,因为在使用开发工具时,它会在引号之间显示字符串值,但不显示数字.也许是Inspector窗格剥离了引号.
我已经在jQuery中有一个旧的自动typeCasting函数,但我总是厌倦这些情况,因为0和false,仍然可以弄乱一些东西.
任何人都知道localStorage.*Library是否有设置来维护变量类型?
Jos*_*ber 12
您应该首先将它们转换为JSON:
localStorage.setItem( 'subTotal', JSON.stringify(12345) );
Run Code Online (Sandbox Code Playgroud)
然后,在检索项目时,解析JSON:
JSON.parse( localStorage.getItem('subTotal') );
Run Code Online (Sandbox Code Playgroud)
这是小提琴: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) );
}
};
Run Code Online (Sandbox Code Playgroud)
这是小提琴:http://jsfiddle.net/hD9dF/1/