我尝试了有意义的事情:
在下面的模块中localStorage.foo
可以正常工作,但localStorage.session_array['privacy']
会返回undefined。
这是现代布鲁斯的原型代码。
var ISession = ( function ()
{
localStorage.session_array =
{
privacy: 0
};
localStorage.foo = 1;
var SessionI = function ( )
{
};
SessionI.prototype.get = function( type )
{
return localStorage.session_array[ type ];
};
SessionI.prototype.set = function( type, value )
{
localStorage.session_array[ type ] = value;
alert( '|' + localStorage.foo ); // returns 1
alert( '|' + localStorage.session_array[ 'privacy' ] ); // returns undefined
};
return SessionI;
} ) ();
同时我将使用非数组属性来实现它。
答案 0 :(得分:3)
localStorage仅将数据保存为字符串
答案 1 :(得分:1)
由于并非所有浏览器都支持localstorage,您可能需要查看store.js。它在可用时支持localstorage,如果不使用,则使用其他存储机制(globalStorage和UserData)。最好的部分是你也可以存储JSON编码数据。
// Store 'marcus' at 'username'
store.set('username', 'marcus')
// Get 'username'
store.get('username')
// Remove 'username'
store.remove('username')
// Clear all keys
store.clear()
// Store an object literal - store.js uses JSON.stringify under the hood
store.set('user', { name: 'marcus', likes: 'javascript' })
// Get the stored object - store.js uses JSON.parse under the hood
var user = store.get('user')
alert(user.name + ' likes ' + user.likes)
store.set('user', { name: 'marcus', likes: 'javascript' })
alert("Hi my name is " + store.get('user').name + "!")
store.set('tags', ['javascript', 'localStorage', 'store.js'])
alert("We've got " + store.get('tags').length + " tags here")