我有一个带"obj.key.subkey.subsubkey"
字符串的函数:
function(obj, key) {
return eval('obj.'+ key);
}
在这种情况下,eval
的安全替代方案是什么?eval
是否合适?在这种情况下,new Function
将不起作用AFAIK。也许split
然后循环呢?
答案 0 :(得分:1)
我不确定你真的需要一个功能。如果你有对象和键只需使用键来返回对象的属性。
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;
}