2017-09-27 1 views
3

JavaScriptを使用して小さなWebベースのRPGを作成しています。残念ながら保存と読み込み機能を実装すると、コードの重要な部分が完全に失敗しました。一つの小さな部分を除いて、localStorageは矢印関数を含むオブジェクトを保存しません

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

function load() { 
    player = JSON.parse(localStorage.getItem('playerData')); 
} 

これはすべてのために完璧に動作します:これら2つの関数を使用して

var player = { 
    stats: { 
     level: 1, 
     healthBase: 50, 
     health: 50, 
     strength: null, 
     strengthBase: 7, 
     strengthMods: { 
     }, 
    }, 
}; 

:今、私は私の選手オブジェクト内のすべてのプレーヤーのデータを保存していますのよう

。私は、コンソール

player.stats.strengthMods.mods 

を呼び出した後、保存した後、私のゲームをロードする場合、私は、そのよう

player.stats.strengthMods.mods =() => (5); 

のようなただし行い、それらを変更するために私の統計情報に修飾子を追加する必要がある特定の状況で 私には空のオブジェクトしか表示されません。私はなぜ私のブラウザが矢印機能をロードすることを拒否しているのか理解できません。

理由は何ですか?

+0

JSONは関数をシリアル化できません。 –

+0

なぜあなたは修飾子をそのように保存したいのですか?改造を挿入したり削除したりするための専用の機能を持つ 'player.stats.strengthMods.mods = [/ *ここに個々の改造者を挿入する* /]'とはどのように違うのですか? – Thebluefish

+0

それは、彼らが呼び出され、適用される方法にほとんど依存しています。私はそれらを保存したい場合、私はあなたの道にしなければならないと思います – Eight

答えて

6

JSONには、関数定義を格納する方法がありません。データのシリアル化形式であり、任意のオブジェクトのシリアル化形式ではありません。値をlocalStorageに入れるためにJSONifyする必要があるため、関数を保存することはできません。 localStorageはここでは直接の問題ではありません。たとえあなたがそれを使ったことがないとしても、関数はJSONへの往復を乗り切って生き残ることはできません。

関連する問題