我正在创建一个小型的基于文本的冒险游戏,我似乎很难将数据保存在localStorage上。
我使用了JSON.stringify()和JSON.parse()。
我的对象结构如下:
let status = {
key1: 0,
key2: false,
key3: "",
key4: false,
currentScene: story.scene1
}
我的故事对象看起来像这样:
let story = {
scene1: {
text: () => `some text`,
choices: [ {
option: () => `some text`,
action: () => doSomething(),
},
{
option: () => `some text`,
action: () => doSomething(),
} ]
},
scene2: {
// same structure
}
}
当我保存并加载我的localStorage时,它看起来像这样:
localStorage.setItem('game', JSON.stringify(status));
并且:
status = JSON.parse(localStorage.getItem('game'));
我希望我的对象看起来像这样:
status = {
key1: 0,
key2: false,
key3: "",
key4: false,
currentScene: {
text: () => `some text`,
choices: [ {
option: () => `some text`,
action: () => doSomething(),
},
{
option: () => `some text`,
action: () => doSomething(),
} ]
}
}
但是我得到了:
status = {
key1: 0,
key2: false,
key3: "",
key4: false,
currentScene: { choices: [ {}, {} ] }
}
我在currentScene
中的所有对象都是空的。是否因为它们包含数组函数(或仅包含函数)?
我尝试将story.scene1
保存在其自己的localStorage变量中,但遇到相同的问题:
localStorage.setItem('game', JSON.stringify(stroy.scene1));
curScene = JSON.parse(localStorage.getItem('game'));
console.log(curScene); // {"choices":[{},{},{}]}
有什么想法吗?
非常感谢您。