javascript 未捕获的类型错误:尝试访问对象时在非对象上调用了 Object.keys
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/17319336/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Uncaught TypeError: Object.keys called on non-object while trying to access object
提问by apaleja
I am trying to access array inside object using Object.keys(obj.arr));
method. If I access array directly like below, then it is giving proper output:
我正在尝试使用Object.keys(obj.arr));
方法访问对象内部的数组。如果我像下面一样直接访问数组,那么它会提供正确的输出:
alert(Object.keys(obj.arr));
but if I pass array name using parameter then it is giving error :
但是如果我使用参数传递数组名称,则会出现错误:
var selected = "arr";
alert(Object.keys(obj.arr));
error : Uncaught TypeError: Object.keys called on non-object
There is example : DEMO
有例子:DEMO
采纳答案by Esailija
If you need dynamic property access, you cannot use .value
. That is always literally accessing named key of "value"
. If you want to access property with the key name contained in the variable value
you need to use brackets: obj[value]
如果您需要动态属性访问,则不能使用.value
. 那总是从字面上访问 的命名键 "value"
。如果要value
使用变量中包含的键名访问属性,则需要使用方括号:obj[value]
Fixed demo: http://jsfiddle.net/Lv6TY/7/
固定演示:http: //jsfiddle.net/Lv6TY/7/
console.log("Variable Pass "+Object.keys(groups[selected]));