首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用方法保存和加载对象?

如何使用方法保存和加载对象?
EN

Stack Overflow用户
提问于 2018-07-23 00:09:01
回答 2查看 308关注 0票数 1

有一个问题。我像这样创建我的游戏对象:

代码语言:javascript
复制
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'));
}

加载游戏状态方法"reset_status“后将不复存在。

也许我应该描述对象,创建实例,保存实例,然后用load中的参数重新加载创建实例?

EN

回答 2

Stack Overflow用户

发布于 2018-07-23 00:11:03

只需将存储的状态分配给对象:

代码语言:javascript
复制
Object.assign(game_status, JSON.parse(localStorage.getItem('game_status')));

这样你就不用写构造函数了。

票数 2
EN

Stack Overflow用户

发布于 2018-07-23 01:14:50

因为无论如何对象状态和对象行为都在一个简单的散列中,并且假设这里需要的是一个快速补丁,我会这样做:

代码语言:javascript
复制
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();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51466926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档