我正在使用Javascript创建一个基于Web的小型RPG,不幸的是,一旦实现我的保存和加载功能,我的代码的关键部分就完全失败了。
截至目前,我将所有玩家数据保存在我的播放器对象中:
var player = {
stats: {
level: 1,
healthBase: 50,
health: 50,
strength: null,
strengthBase: 7,
strengthMods: {
},
},
};
使用这两个功能:
function save() {
localStorage.setItem("playerData", JSON.stringify(player));
}
function load() {
player = JSON.parse(localStorage.getItem('playerData'));
}
除了一小部分外,这适用于所有事情。 在某些情况下,我需要在我的统计数据中添加修饰符来改变它们,我这样做
player.stats.strengthMods.mods = () => ( 5 );
但是,如果我保存然后加载我的游戏,则在致电后
player.stats.strengthMods.mods
控制台只会显示一个空对象。我无法理解为什么我的浏览器拒绝加载箭头功能,其他所有内容都完全不同。
知道为什么吗?
答案 0 :(得分:6)
JSON
没有任何方法来存储函数定义;它是一种数据序列化格式,而不是任意对象序列化格式。由于您必须JSONify将值放在localStorage
中,因此无法保留函数。 localStorage
不是这里的直接问题;即使你从未使用它,该功能也无法在往返JSON并返回时继续存在。