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

Eig*_*ght 3 javascript serialization json object local-storage

我正在使用Javascript创建一个基于Web的小型RPG,不幸的是,一旦实现我的保存和加载功能,我的代码的关键部分就完全失败了.

截至目前,我将所有玩家数据保存在我的播放器对象中:

var player = {
    stats: {
        level: 1,
        healthBase: 50,
        health: 50,
        strength: null,
        strengthBase: 7,
        strengthMods: {
        },
    },
};
Run Code Online (Sandbox Code Playgroud)

使用这两个功能:

function save() {
    localStorage.setItem("playerData", JSON.stringify(player));
}

function load() {
    player = JSON.parse(localStorage.getItem('playerData'));
}
Run Code Online (Sandbox Code Playgroud)

这对一切都很有效,除了一小部分.在某些情况下,我需要在我的统计数据中添加修饰符来改变它们,我这样做

player.stats.strengthMods.mods = () => ( 5 );
Run Code Online (Sandbox Code Playgroud)

但是,如果我保存然后加载我的游戏,请致电

player.stats.strengthMods.mods
Run Code Online (Sandbox Code Playgroud)

控制台只显示一个空对象.我无法理解为什么我的浏览器拒绝加载箭头功能,其他一切都完全加载.

知道为什么吗?

Sha*_*ger 6

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