如何实现本地存储阵列?

时间:2012-06-05 18:28:41

标签: javascript

我尝试了有意义的事情:

在下面的模块中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;

} ) ();

同时我将使用非数组属性来实现它。

2 个答案:

答案 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")