在本地存储中保存游戏会导致 [object Object] 和 undefined

Saving game in local storage results in [object Object] and undefined

model 是一个对象,它以数组和对象的形式包含我的代码中的每个变量。每当我使用 saveGame 函数时,我都想保存值的快照,然后每当我使用 loadGame 函数时将它重新定义到该快照。但是,当我使用 loadGame() 时,它 returns [object Object],然后其中的每条信息都变得未定义。给出了什么?

function saveGame() {
    localStorage.setItem('model', model);
}
function loadGame() {
    model = localStorage.getItem('model');
    updateView();
}

根据MDN web docs, keys and values stored in localStorage are always in UTF-16 DOMString格式。

因此您不能在 localStorage 中存储对象。因为它只接受字符串。你提到的 [object Object] 是一个对象的字符串表示,它使用默认的 Object.toString() 方法自动创建。

将对象转换为字符串表示并保留变量。您可以使用 JSON.stringify() 将对象序列化为 JSON 字符串。然后使用 JSON.parse() 将其反序列化以将其转换回对象。

function saveGame() {
    localStorage.setItem('model', JSON.stringify(model));
}
function loadGame() {
    model = JSON.parse(localStorage.getItem('model'));
    updateView();
}