Javascript 如何使用方法保存和加载对象?
我有个问题。我创建的游戏对象如下所示:Javascript 如何使用方法保存和加载对象?,javascript,json,object,javascript-objects,Javascript,Json,Object,Javascript Objects,我有个问题。我创建的游戏对象如下所示: var game_status = { money : 350000000, reset_status : function() { this.money = 350000000; } } function saveGame(){ localStorage.setItem('game_status', JSON.stringify(game_status)); } fun
var game_status = {
money : 350000000,
reset_status : function() {
this.money = 350000000;
}
}
function saveGame(){
localStorage.setItem('game_status', JSON.stringify(game_status));
}
function loadGame(){
game_status = JSON.parse(localStorage.getItem('game_status'));
}
加载游戏状态后,“重置状态”方法不再存在
可能我应该描述对象、创建实例、保存实例,然后使用load中的参数重新加载创建实例?只需将存储状态分配给对象:
Object.assign(game_status, JSON.parse(localStorage.getItem('game_status')));
这样,您就不必编写构造函数。因为无论如何,对象状态和对象行为都存在于一个简单的散列中,并且假设这里需要的是一个快速补丁,我将执行以下操作:
var INITIAL_GAME = {
money : 350000000
},
game_status;
function saveGame(){
// strip behavior
delete game_status.resetGame;
localStorage.setItem('game_status', JSON.stringify(game_status));
}
function loadGame(){
game_status = JSON.parse(localStorage.getItem('game_status'));
if (!game_status) {
// init by cloning initial object
game_status = JSON.parse(JSON.stringify(INITIAL_GAME));
}
// set behavior again
game_status.resetGame = function resetGame() {
this.money = 350000000;
}
}
loadGame();
for(var attrname in game_statusTemp){game_status[attrname]=
游戏_statusTemp[attrname];}
我的案子的快速解决方案。发现于
和但是game_status是有效的json吗?@nullPointer是的,函数在序列化时被删除,这是需要的行为。MDN显示IE不支持它。是否有任何解决方法或其他解决方案?谢谢您的回答。不过有一个通知。stringify()将删除对象中的任何方法,因此无需删除对象的方法。