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 に答える