2013-06-15 2 views
1

이 방법이 가능하지는 모르겠지만 문자열과 같은 이름을 가진 개체를 선택하여 사용하는 방법이 있습니다 각각의 루프에서?문자열과 같은 이름의 개체를 선택하는 방법이 있습니까

var test = "myobj"; 

    var myobj = {"1" : "2", "2" : "3"}; 

    function testing(test){ 

     // If i do a console.log on the variale "test": 
     console.log(test); // will show the string: "myobj" 

     typeof(test); // is string 

     // somehow select the object with the name myobj, and maybe iterate through it? 
     jQuery.each(myobj, function(key, val){ 
      alert(val); // right now this will alert the actual letters: m y o b j 
     }); 

    } 
+2

'window [myobj]'를 사용하면 어떻게됩니까? –

+0

창 [ "myobj"]을 사용하여 작동했습니다.이 질문에 대답 해 주시고 이유를 설명해 주시겠습니까? 타이 ..이 크로스 브라우저 야? – user2065483

+0

Sebastian의 설명을 보면이 대답이 명확하면 답변을 승인 할 수 있습니다 –

답변

2

당신은이 같은 자신의 캐릭터 이름을 가진 개체 속성을 해결할 수 :

당신이 window의 속성 (난 당신이이 테스트를하는 가정입니다 세계로 test을 작성하여 예에서
obj["property"] 

브라우저) : 변수가 글로벌 경우

window[myobj] 
1

var test = "myobj"; 
    var myobj = {"1" : "2", "2" : "3"}; 

    console.log(window[test]); 

$(function() { ... }); wrapper that var test and var myobj will not be global and therefore not available under the window` 개체 내에 코드를 넣으면됩니다.

0

기타 답변에 따르면 myObj 변수가 글로벌 일 경우 인 경우 window[test]을 사용할 수 있습니다.

그러나 이렇게하면 안됩니다. 아마도 myobj2, yetAnotherObj 등과 같은 많은 다른 관련 변수가있을 것입니다. 그렇지 않으면이 작업을 수행하는 데 별다른 의미가 없습니다. 그러나 이러한 변수를 사용하여 전역 네임 스페이스를 어지럽히고 싶지는 않습니다.

대신, 다른 모든 변수가 포함 된 개체를 만들 : 지금

var myObjects = { 
    myobj: {"1" : "2", "2" : "3"}, 
    myobj2: {"4" : "5", "6" : "7"}, 
    yetAnotherObj: {"8" : "9", "10" : "11"} 
}; 

, 그것은 이러한 개체 중 하나의 이름으로 test 변수 제공을, 다음을 사용 :

myObjects[test] 

글로벌 네임 스페이스가 어지럽히 지 않을뿐만 아니라 myObjects과 그 안에 포함 된 개체가 전역이 아닌 로컬 변수 인 경우에도 작동합니다.

관련 문제