在本地存储中保存游戏会导致 [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();
}
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();
}