如何使用数组键(文本值)来引用同名变量?
jsFiddle http://jsfiddle.net/gBD4s/
var cr,au,gen,bn,fmt,str;
var sbASCtrls = {"cr":"ContentRating","au":"Gold","gen":"Gender","bn":"Big Number","fmt":"Format","str":"Starting String"};
for (var key in sbASCtrls){
//This does not work ... breaks script
"'"+key+"'" = sbASCtrls[key];
alert('var CR: ' + cr);
return false;
}
在另一种语言中,我会简单地用百分号包围 var 名称,因此:
var %key% = "bob";
将使:
var cr = bob;
这如何在 JavaScript 中完成?
为什么我需要这个不寻常的解决方案:
对预先存在的 PHP 处理器文件进行一系列 AJAX 调用,该文件需要 HTML 格式的所有数据。在本例中,我已经拥有 JSON/jsObj 格式的数据,并希望快速将其分解为单独的变量。最有效/可读(不管你信不信!)的代码是通过使用实现的eval()
。阅读完 Jonathan 和 Niet 的帖子/评论后,我为如何将数据保留为 JSON 格式并像这样使用它而苦苦挣扎,但 AJAX 处理器总是需要 HTML 格式的一份数据。令我失望的是,我无法找到混合两种数据类型的方法。面对重新编码整个应用程序以仅使用 JSON 或继续使用 HTML 的选择,SDLC 为我做出了决定。
感谢 Niet、Jonathan、Cristy、Stephen Thomas 和 Fallenreaper 提供的中肯建议和好主意。我将研究你们各自发表的其他帖子。
当你could use eval
像这样:
// DO NOT DO THIS
eval(key+" = svASCtrls[key];");
您可能应该停下来问问自己为什么要这样做。你已经有了一个非常整洁的对象,所以只需使用它......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)