动态创建JS对象

时间:2011-08-29 08:41:12

标签: javascript object dynamic javascript-objects

我正在用硬编码值重写一个具有灵活性和动态性的项目。但是,我一直遇到麻烦。

我现在编写了大部分JS代码,但是我发现了一些我无法解决的错误,所以我决定从头开始。我现在正在考虑将我的数据放入一个跟踪总数的对象中。该项目基本上允许人们按事件订购门票,酒店等。

然而,这曾经是硬编码,就像我说的那样。现在它必须灵活,我不确定是否可以动态创建一个对象?这是我的问题:

我以前使用的对象如下:

var total = {   amount: 0,
            tickets: 0,
            passes: 0,
            fri: 0,
            sat: 0,
            sun: 0,
            freecarpass: 0,
            freepass_fri: 0,
            freepass_sat: 0,
            freepass_sun: 0,
            passes_fri: 0,
            passes_sat: 0,
            passes_sun: 0,
            passes_totalPurchase: 0
        };

正如你所看到的,日子是硬编码的。但是,使用新系统,每个事件都会有不同的日期,所以我需要能够基于此构建我的对象,如果这有意义的话。

例如,如果事件从周三到周六运行,则对象中的日期将为:

wed: 0, thu: 0, fri: 0, sat: 0 

如果可能的话,我不知道如何实现这个目标?如果需要,我可以提供更多的项目代码。提前谢谢。

3 个答案:

答案 0 :(得分:2)

您仍然可以动态添加新属性:

total.wed = 0;

total["wed"] = 0;

答案 1 :(得分:1)

虽然我不相信这是解决问题的最佳方法,但是你可以在Javascript中随心所欲地添加或删除对象的属性。基本上JS对象只是属性的键值对。所以你可以从拥有一个所有日子都会分享的对象开始,就像这样:

var total = {  
    amount: 0,
    tickets: 0,
    passes: 0
};

然后,只需为其指定一个值即可添加属性,例如:

total.sat = 3;
total.sun = 1;

W3Schools对此here.

有更长的解释

答案 2 :(得分:0)

是的,在javascript中你可以用对象做很多事情。

要向对象添加新属性,只需执行total["nameofyourday"]=0;

这样,如果要动态更改“nameofyourday”的值,可以在括号之间放置一个包含字符串的变量。像那样:

var day="wed";
total[day]=0;

,这将导致total.wed值等于0。

为了提供更具体的实现,我认为需要更多的代码。