这是我的代码。基本上我正在尝试开发一种方法来存储包含在名为 myApp
的对象中的本地存储中的各种内容目前,我可以将对象调用高分确定保存到本地存储。我正在努力弄清楚如何将这个 highscore 对象放在一个名为 myApp 的对象中并保存到本地存储?
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);
答案 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];
}
};
}());