我非常想創建一個精簡的界面,要求用戶選擇三個單選按鈕,這樣一個如下圖所示:將字符串轉換爲JavaScript對象 - 是否比使用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";
所以我需要從選定的單選按鈕檢索到合適的對象引用的值轉換。你如何解釋這些散列?謝謝!
非常感謝回覆,但我仍然有點失落。爲了添加一些代碼,我編輯了我原來的帖子。 – Jason 2010-02-13 21:21:54
無視我的文章編輯,我得到它的工作,感謝一百萬!!!!! -Jason – Jason 2010-02-13 21:26:15
使用散列的美妙之處在於你可以根據你的示例代碼在循環中填充它: 'object_map [type] = new GIcon(baseIcon); object_map [type] .image = image_base_url + type +「。png」;' – DVK 2010-02-13 21:30:15