Я бы в идеале хотел бы создать обтекаемый интерфейс, который требует от пользователя, чтобы выбрать один из трех переключателей, как показано здесь:Преобразование строки в объект 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()
действительно подходит?
Мысли очень ценим!
EDIT: @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
Не обращайте внимание на мое сообщение, я получил его на работу, спасибо миллион !!!!! -Jason – Jason
И красота использования хэша состоит в том, что вы можете заполнить его в цикле на основе вашего образца кода: 'object_map [type] = new GIcon (baseIcon); object_map [type] .image = image_base_url + type + ".png"; ' – DVK