我为一个obj对象动态添加属性,出现如下情况。
var arr=[];
arr['js']='jquery';
arr['css']='oocss';
var obj={};
for(var i in arr)
{ obj.i=arr[i];
}
alert(obj.js);
css显示为undefined的,说明obj中没有这个属性。
但是我换一种添加方式var arr=[];
arr['js']='jquery';
arr['css']='oocss';
var obj={};
for(var i in arr)
{ obj[i]=arr[i];
}
alert(obj.js);可以打印出来的值。我疑惑的动态添加对象属性的时候.和[]在我印象中都可以的。但是上面代码的问题不知道出在哪里,忘达人解答。

解决方案 »

  1.   

    你的.i表示obj的i属性, 即obj["i"] 当然不能直接.i赋值了
      

  2.   

    有些情况
    .是娶不到的,具体的我也不记得了,我知道比如a["oo" + i]这样的就不能.
    所以你用[]就可以了
      

  3.   

    假如你用 obj.js="Jquery" 应该就可以了
      

  4.   

    是不是要用eval转换一下eval('obj.i')=arr[i]
      

  5.   

    "[]才是对不确定的属性的访问 比如上你这里,属性命是动态构建的", 是么? 
    obj.js == obj["js"], 这是确定的属性吧, 可以访问.
    json中数据以key-value的对形式出现, .号和[]号都表示对属性的索引, 只是用法不同.令=>#8 写法错误
    eval("obj." + i + " =_obj['" + i + "']");//这样用eval强转, 且要注意右边[]中带引号