【问题标题】:JS objects: how to Dynamically name members when adding propertiesJS对象:添加属性时如何动态命名成员
【发布时间】:2012-04-03 11:06:34
【问题描述】:

我正在尝试使用动态创建的字符串作为成员名称来创建新的对象成员:

  > obA = {};
  > obb = {name:'jim', age:22};
  > var s = new String(obb.name);
  > obb;                       //{ name: 'jim', age: 22 }
  > obA.s = obb;               //{ name: 'jim', age: 22 }
  > obc = {name:'don', age:23};
  > var c = new String(obc.name);
  > obA.c = obc;
  > obA;
        outputs the folowing
             { s: { name: 'jim', age: 22 },
               c: { name: 'don', age: 23 } }

在此示例中,我想将成员 'jim''don' 添加到 obA,而不是 's' 'c'。相反,我上面的调用添加了成员​​ 's''c'。有没有办法动态命名成员,以便我可以在运行时添加 'jim''don' 而无需提前知道成员名称。在上面的示例中,我想从 'obA' 最后得到的是:

  > obA;
   // should output
        { jim: { name: 'jim', age: 22 },
          don: { name: 'don', age: 23 } }

【问题讨论】:

    标签: javascript object dynamic member


    【解决方案1】:

    使用括号表示法。

    obj['property'] = value;
    

    【讨论】:

      【解决方案2】:

      试试[],而不是点。

      obA[s] = obb;
      obA[c] = obc;
      

      【讨论】:

        【解决方案3】:
        obA[obb.name] = obb;
        obA[obc.name] = obc;
        

        【讨论】:

        • 谢谢,正是我想要的。
        猜你喜欢
        • 2020-11-05
        • 2015-12-12
        • 1970-01-01
        • 2011-11-30
        • 2011-01-05
        • 2016-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多