2010-02-13 7 views
2

문자열을 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> 

3 가지 중 어떤 것을 선택했는지 쉽게 결정할 수 있습니다.

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"; 

그래서 선택한 라디오 단추에서 검색된 값을 적절한 개체 참조로 변환해야합니다. 당신이 설명하는대로 이것을 어떻게 해시에 저장할 수 있습니까? 감사!

답변

3
, 당신은 또한 단순히 해시에 일치하는 객체를 저장할 수있는이 같은 단순한 문자열에 대한

,이

var obj = object_map[iconType];

+0

답장을 보내 주셔서 감사합니다. 아직 조금 잃어 버렸습니다. 약간의 코드를 추가하기 위해 원래 게시물을 수정했습니다. – Jason

+0

내 게시물 편집을 무시하고, 작동하도록했습니다. 감사합니다. 백만 !!!!! -Jason – Jason

+0

해시 사용의 장점은 샘플 코드를 기반으로 루프에 채울 수 있다는 것입니다. object_map [type] = new GIcon (baseIcon); object_map [type] .image = image_base_url + type + ".png";' – DVK

1
var obj = window[iconType] 

개체를 입력에 직접 연결할 수도 있습니다.

$(function() { 
    var form = $("#icon-type"); 
    form.get(0).iconTypeObject = new Apples(); 
    form.get(1).iconTypeObject = new Oranges(); 
    form.get(2).iconTypeObject = new Grapes(); 
}); 

var iconObject = $('input[name=icon]:checked')[0].iconTypeObject; 
+0

@Chaos 같은 액세스 - 나는, 영업 이익은 "이전에 만든"라고 생각하지 "새로운"객체? – DVK

+0

@DVK - jQuery 준비 함수에서 객체가 생성되었다고 가정합니다. – ChaosPandion

관련 문제