localStorage不会保存包含箭头功能的对象

时间:2017-09-27 20:54:42

标签: javascript json object serialization local-storage

我正在使用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

控制台只会显示一个空对象。我无法理解为什么我的浏览器拒绝加载箭头功能,其他所有内容都完全不同。

知道为什么吗?

1 个答案:

答案 0 :(得分:6)

JSON没有任何方法来存储函数定义;它是一种数据序列化格式,而不是任意对象序列化格式。由于您必须JSONify将值放在localStorage中,因此无法保留函数。 localStorage不是这里的直接问题;即使你从未使用它,该功能也无法在往返JSON并返回时继续存在。