javascript - 通过字符串值引用 javascript 对象 - 不使用 eval()

标签 javascript eval

环顾四周,没有找到任何与我想做的事情相匹配的东西..

我试图通过字符串表示来引用一个对象,尽管我到处都看到使用 eval() 是不好的 - 尽管找不到不使用 来做到这一点的方法>eval()

所以我的用例:

我在按钮上有一个数据属性;

data-original-data-object="window.app.myData.originalData"

单击按钮时,我需要访问 window.app.myData.originalData 中保存的实际对象

现在,我知道我能做到:

var dataObj = eval($(this).data('original-data-object'));

还有其他方法可以做到这一点吗?

如果有帮助的话,存储在 window.app.myData.originalData 中的数据是一个 JSON 对象。

最佳答案

像这样:

var obj = (function(str){
  var arr = str.split('.');

  if (arr[0] === 'window'){
    arr.shift();
  }

  return arr.reduce(function(a, b){
     return a[b];
  }, window);

}("window.app.myData.originalData"))

关于javascript - 通过字符串值引用 javascript 对象 - 不使用 eval(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21439700/

相关文章:

JavascriptMVC:监听包装 Controller 中实例化 Controller 的事件

javascript - 将纬度和经度转换为图像上的坐标

clojure - Clojure 中的 pound-quote (hash-quote, #') 是否运行解析和符号函数?

python - 如何在Python中从字符串创建实例的对象

javascript - TOMCAT 向请求添加参数时返回 400 (bad request)

javascript - 无法使用 casperjs 评估和 __doPostBack 函数导航

java - jdk8中scriptmanager的返回值

java - RserveException : eval failed Syntax error

javascript - 使用javascript根据需要注入(inject)脚本引用?

bash - 使用环境变量将参数传递给命令