构造要使用更改进行复制的默认数据对象

时间:2013-02-08 21:10:32

标签: javascript json ajax

我有一个有2个玩家的游戏。它们具有几乎相同的开始数据,当然它在游戏过程中会发生变化。

我猜我需要一些构造函数对象的王,我将复制然后修改,我也需要它为JSON以便于ajax发送。

是否有可以帮助我的设计模式?我不想使用数据库,因为我只需要一个游戏实例的数据。

这是我现在为一名玩家使用的结构:

player = {
    "active" : true,
    "room" : openRoom,
    "id" : playerID,
    "name": username,
    "hp" : 5,
    "units" : {
        1 : {
            "id" : 1,
            "hp" : 3,
            "row" : 1,
            "square" : 1
        },
        2 : {
            "id" : 2,
            "hp" : 4,
            "row" : 2,
            "square" : 1
        },
        3 : {
            "id" : 3,
            "hp" : 5,
            "row" : 3,
            "square" : 1
        }
    }
};

3 个答案:

答案 0 :(得分:0)

http://www.w3schools.com/js/js_objects.asp

在“使用对象构造函数”部分中是您需要的所有信息,它显示了使用Person对象的示例,但它直接适用于您想要执行的操作。

快乐的编码!

答案 1 :(得分:0)

有几种关于对象实例化和初始化的设计模式。但是,您似乎不需要任何继承或“属性共享”技术,因此返回新对象的非常简单的函数应该适合作为构造函数。您甚至可以在编码时使用对象文字。

两个构造函数的示例,每个函数都有一些参数:

function makePlayer(id, name, units) {
    return {
        "active" : true,
        "room" : openRoom,
        "id" : id,
        "name": name,
        "hp" : 5,
        "units" : units
    };
}
var uuid = 1;
function makeUnit(row) {
    return {
        "id" : uuid++,
        "hp" : 3,
        "row" : row,
        "square" : 1
    };
}
var player = makePlayer(playerId, username, [makeUnit(2), makeUnit(4), makeUnit(3)]);
var jsonstring = JSON.stringify(player);

答案 2 :(得分:0)

我认为你想要克隆JSON对象。使用JQuery的最简单方法是

player1 = $.extend({}, player, {name:"Allen"});
player2 = $.extend({}, player, {name:"John"});

如果您不使用JQuery,请使用JSON对象

var player1 = JSON.parse(JSON.stringify(player));
var player2 = JSON.parse(JSON.stringify(player));
player1.name = "Allen";
player2.name = "John";