我有一个函数,它接受一个像这样的字符串"obj.key.subkey.subsubkey"
:
function(obj, key) {
return eval('obj.'+ key);
}
eval
在这种情况下,什么是安全的替代方案或eval
很好?new Function
在这种情况下将无法正常工作 AFAIK。也许split
然后循环?
我有一个函数,它接受一个像这样的字符串"obj.key.subkey.subsubkey"
:
function(obj, key) {
return eval('obj.'+ key);
}
eval
在这种情况下,什么是安全的替代方案或eval
很好?new Function
在这种情况下将无法正常工作 AFAIK。也许split
然后循环?
我不确定您是否真的需要这里的功能。如果您有对象和键,只需使用键返回对象的属性。
obj[key]
如果您必须处理多个键:
function get(obj, key) {
var keys = key.split(".");
var tmp = obj;
for (var x = 0; x < keys.length; x++){
tmp = tmp[keys[x]];
}
return tmp;
}
工作示例:http: //jsfiddle.net/H55ka/