未捕获的TypeError:在尝试访问对象时调用非对象的Object.keys

我试图使用Object.keys(obj.arr));访问对象内的数组Object.keys(obj.arr)); 方法。 如果我像下面一样直接访问数组,那么它会给出正确的输出:

  alert(Object.keys(obj.arr)); 

但如果我使用参数传递数组名称,那么它会给出错误:

 var selected = "arr"; alert(Object.keys(obj.arr)); error : Uncaught TypeError: Object.keys called on non-object 

有例子: DEMO

如果需要动态属性访问,则不能使用.value 。 这总是字面上访问"value"命名键。 如果要使用变量value包含的键名访问属性,则需要使用括号: obj[value]

修正演示: http : //jsfiddle.net/Lv6TY/7/

 console.log("Variable Pass "+Object.keys(groups[selected]));