【问题标题】:Dynamic creation of JS objectJS对象的动态创建
【发布时间】:2011-08-29 08:41:12
【问题描述】:

我正在用硬编码值重写一个项目,以使其变得灵活和动态。但是,我总是遇到麻烦。

我现在编写了大部分 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 

等等

我不确定如何实现这一点,如果这可能的话?如果需要,我可以提供更多项目代码。提前致谢。

【问题讨论】:

    标签: javascript object dynamic javascript-objects


    【解决方案1】:

    您仍然可以随时添加新属性:

    total.wed = 0;
    

    或

    total["wed"] = 0;
    

    【讨论】:

      【解决方案2】:

      虽然我不相信这是解决您的问题的最佳方式,但是您可以在 Javascript 中随心所欲地添加或删除对象的属性。本质上,JS 对象只是属性的键值对。因此,您可以从拥有一个所有日子都会共享的对象开始,如下所示:

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

      然后你可以简单地通过给它一个值来添加一个属性,例如:

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

      W3Schools 对此here.有更长的解释

      【讨论】:

        【解决方案3】:

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

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

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

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-09
          • 2016-08-18
          相关资源
          最近更新 更多