0

我有一个函数,它接受一个像这样的字符串"obj.key.subkey.subsubkey"

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

eval在这种情况下,什么是安全的替代方案或eval很好?new Function在这种情况下将无法正常工作 AFAIK。也许split然后循环?

4

1 回答 1

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/

于 2013-02-03T10:57:32.363 回答