替代eval进行多个属性查找

时间:2013-02-03 10:55:44

标签: javascript eval

我有一个带"obj.key.subkey.subsubkey"字符串的函数:

function(obj, key) {
  return eval('obj.'+ key);
}

在这种情况下,eval的安全替代方案是什么?eval是否合适?在这种情况下,new Function将不起作用AFAIK。也许split然后循环呢?

1 个答案:

答案 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;
}

工作示例:http://jsfiddle.net/H55ka/