JS对象:如何在添加属性时动态命名成员

时间:2012-03-18 20:43:06

标签: javascript object dynamic member

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

  > 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 } }

3 个答案:

答案 0 :(得分:3)

使用括号表示法。

obj['property'] = value;

答案 1 :(得分:2)

尝试使用[]代替点。

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

答案 2 :(得分:1)

obA[obb.name] = obb;
obA[obc.name] = obc;