javascript - 将字符串转换为 JavaScript 对象 - 有没有比使用 eval 更安全的方法?

标签 javascript jquery eval

我希望创建一个简化的界面,要求用户选择三个单选按钮之一,如下所示:

<form id="icon-type">
    <input type="radio" name="icon" value="apples" /> Apples
    <input type="radio" name="icon" value="oranges" /> Oranges
    <input type="radio" name="icon" value="graphes" /> Grapes
</form>

使用 jQuery 可以轻松确定已选择这三个中的哪一个:

var iconType = $('input[name=icon]:checked').val();

但是,我需要将分配给 iconType 的字符串转换为先前创建的同名对象。我读到 eval() 是执行此操作的最佳方法,但也遇到了许多警告,指出不应使用 eval()。然而,似乎没有其他方法可以执行此转换。因此我的问题是:虽然我认识到 eval() 肯定会被滥用,但在这种情况下 eval() 确实是合适的方法吗?

非常感谢您的想法!

编辑:@DVK,谢谢!但还是有点失落;假设我的对象看起来像这样:

var apple = new GIcon(baseIcon);
apple.image = "http://localhost/images/apple.png";

var orange = new GIcon(baseIcon);
orange.image = "http://localhost/images/orange.png";

所以我需要将从所选单选按钮检索到的值转换为适当的对象引用。正如您所解释的,我如何将这些存储在哈希中?谢谢!

最佳答案

对于像这样的简单字符串,您也可以简单地将匹配的对象存储在哈希中,然后像这样访问

var obj = object_map[iconType];

关于javascript - 将字符串转换为 JavaScript 对象 - 有没有比使用 eval 更安全的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2259040/

相关文章:

javascript - 如何访问body标签内&lt;script&gt;中的元素

javascript - onclick ="location.href=' link.html'"不起作用

linux - 是否有允许将当前行评估为 bash 命令的编辑器?

Javascript:返回在 eval 中创建的值

javascript - 如何从所有分片中获取 users.cache 并将它们放入一个集合中,就像 client.user.cache 返回的集合一样?

javascript - 通过 import() 检索模块时捕获 403 错误

javascript - rails : proper syntax for using a javascript function inside a rails view

javascript - jquery获取当前html文件名

javascript - 在javascript中检测多个按键

python - 转换类名中的字符串(从 appengine 数据存储到类)