如何创建包含其他对象的对象

时间:2014-04-03 20:29:32

标签: javascript local-storage

这是我的代码。基本上我正在尝试开发一种方法来存储包含在名为 myApp

的对象中的本地存储中的各种内容

目前,我可以将对象调用高分确定保存到本地存储。我正在努力弄清楚如何将这个 highscore 对象放在一个名为 myApp 的对象中并保存到本地存储?

http://jsfiddle.net/judz9/

var localStorageClass = {
    set: function (key, value) {
        if (!key || !value) {
            return;
        }

        if (typeof value === "object") {
            value = JSON.stringify(value);
        }

        localStorage.setItem(key, value);
    },
    get: function (key) {
        var value = localStorage.getItem(key);
        if (!value) {
            return;
        }
        if (value[0] === "{") {
            value = JSON.parse(value);
        }

        return value;
    }
};

var TestApp = {
    appLocalData: null,

    init: function () {
        this.appLocalData = localStorageClass;
    },
    setHighScore: function (game, score) {
        var hs = this.appLocalData.get('highscore');

        if (hs === undefined) {
            hs = {};
        }

        hs[game] = score;
        this.appLocalData.set('highscore', hs);
    },
    getHighScore: function (game) {
        var hs = this.appLocalData.get('highscore');
        return hs[game];
    }
};

TestApp.init();
TestApp.setHighScore('game1', 999);
console.log(localStorage);

1 个答案:

答案 0 :(得分:0)

我的理解是,您希望使用“MyApp”键将所有应用数据存储在本地存储对象中。我会通过添加一个存储所有应用数据的MyApp对象来实现这一目标。 MyApp将初始化为“MyApp”的当前本地存储值,如果是null,则会初始化为新对象。当MyApp被更改时,即,当调用localStorageClass.set时,本地存储将更新为当前版本的MyApp。我使用了一个闭包来初始化localStorageClass,这样我就可以将MyApp保密了。

var localStorageClass = (function () {
    var MyApp = JSON.parse(localStorage.getItem('MyApp')) || {};

    return {
        set: function (key, value) {
            if (!key || !value) {
                return;
            }

            MyApp[key] = value;
            localStorage.setItem('MyApp', JSON.stringify(MyApp));
        },
        get: function (key) {
            return MyApp[key];
        }
    };
}());