2011-02-17 5 views
2

이 사이트를 검색하고 봤지만 대답을 찾을 수없는 것 같습니다.변수 이름으로 인스턴스 이름

['abcd'].property = value; 
:

var n = 'abcd'; 

eval('var '+n+' = new myinst();'); 

abcd.property = value; 

내가 변수를 사용하여 액세스해야합니다

나는 사용하여 개체 속성을 인스턴스 이름이 변수로 제공된다 동적 객체의 인스턴스를 생성해야하므로보다는 액세스

하지만이 기능이 작동하지 않는 것 같습니다. 무엇이 누락 되었습니까?

var n = 'abcd'; 
window[ n ] = new myInst(); 
window[ n ].property = value; 

답변

2

이렇게하면 eval을 사용하지 않아야합니다. 존재하는 경우

var baseObj = {}; 
var n = 'abcd'; 

baseObj[n] = new myinst(); 
baseObj[n].property = value; 

delete 그것을 할 수있는 기능을 포함하여, 변수를 통해 당신에게 완벽하게 제어 할 수 있습니다,

delete baseObj[n]; 

또는 확인 : 당신은 쉽게 대신 몇 가지 기본 개체에 "동적"변수를 지정할 수 있습니다

n in baseObj; 
+0

감사합니다. – crankshaft

0

당신은 사용할 수 있습니다. 전역 범위에서, 그것은 window 것 : 변수 변수에 거주해야 다른 어떤 범위에 대한

var foo = 'bar'; 
window[foo] = new myinst(); 
window[foo].property = 'baz'; 
alert(bar.property); 

대체 window 변수 변수 정말하지만 사용하지 않아야 안티 패턴입니다..

2

당신은 배열 표기법을 사용하여 "변수 변수"를 할 수 있지만 그것에 대한 컨텍스트를 제공해야합니다 : 그것은 글로벌의 경우