0

我正在尝试将一些数据保存在本地存储中。我的脚本如下所示:

    localStorage.clear(); //only for testing

    if(typeof localStorage.akten == "undefined") {
        localStorage.akten = new Array();
    }

    var nam = "alpha";


    localStorage.akten[nam] = {
        "beta": 12
    };

    localStorage["a_akte"] = nam;

但如果我做console.log(localStorage);console.log(localStorage.akten); akten只是一个空字符串?为什么?使用普通对象而不是 localStorage 效果很好。

4

2 回答 2

5

令人惊讶的是,魔鬼在细节中。localStorage只存储字符串。将您的对象编码为 JSON,然后再使用例如JSON.stringify()JSON.parse().

于 2013-09-05T14:11:45.670 回答
4

这是因为localStorage不是Object;这是一个界面。您只能为其分配一个字符串,最好的方法是使用localStorage.setItem. 如果要设置更复杂的数据,则需要先将其编码为JSON

function localStore(key, obj) {
    return window.localStorage.setItem(key, JSON.stringify(obj));
}

function localGet(key) {
    return JSON.parse(window.localStorage.getItem(key));
}

localStore('foo', {bar: 'baz'});
localGet('foo'); // Object {bar: "baz"}
于 2013-09-05T14:11:53.577 回答