不用问,当然是undefined,而访问object.prop1却是"value1" 原因已经说过了,无论加不加引号,属性一律当成常量对待.再举一个例子: 复制代码 代码如下: var arr=[]; arr["js"]="jquery"; arr["css"]="oocss"; var obj={}; for(var i in arr) { obj.i=arr[i]; } alert(obj.js);
读者不放猜一下alert会打印什么? 当然是undefined. 大家再猜一下,如果alert(obj.i)会打印什么? 当然是oocss,为什么?因为obj现在只有一个属性i,而且通过两次循环,obj.i前面的被后面的覆盖掉. 如果有需求,需要动态添加属性,也就是说,属性也必须是一个变量才行,如上例代码,alert(obj.js)不是undefined,而是jquery,该如何修改呢? 复制代码 代码如下: var arr=[]; arr["js"]="jquery"; arr["css"]="oocss"; var obj={}; for(var i in arr) { obj[i]=arr[i]; } alert(obj.js);