在localStorage中存储“复杂”对象时出现的问题

时间:2019-04-24 13:10:57

标签: javascript json local-storage

我正在创建一个小型的基于文本的冒险游戏,我似乎很难将数据保存在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":[{},{},{}]}

有什么想法吗?

非常感谢您。

0 个答案:

没有答案