2009-11-21 3 views
0

자바 스크립트 개체에서 동적으로 일부 데이터 값을 초기화하려고하는데 연결된 전달 문자열을 만들면 저장되는 실제 키는 변수 이름이며, 그 안의 값 대신에값은 변수 내용 대신 변수 이름입니다.

예 :

projects.init = function(){ 
    for (var i = this.numBoxes - 1; i >= 0; i--){ 
     var toInject = "item"+i; 
     this.datas[i] = {toInject:"testdata"}; 
    }; 
} 

그런 다음 초기화를 호출 한 후, projects.datas 내부의 값 대신 "항목 1"가되는 .. toInject "testdata로"같이 ... "항목 2".... 무엇 내가 틀렸어 ..? 객체 리터럴에

projects.init = function(){ 
     for (var i = this.numBoxes - 1; i >= 0; i--){ 
       var toInject = "item"+i, 
        obj = {}; 

       obj[toInject] = "testdata"; 
       this.datas[i] = obj; 
     }; 
} 

레이블 표현 할 수 없습니다

답변

6

당신은 대괄호 표기법 property accessor을 두 단계로 개체를 구축하고 사용해야합니다.

당신이 볼 수 있듯이, 먼저 빈 object literal 선언

var obj = {}; 

을 한 다음 속성 설정 : 자세한 내용이 설명하는 참조

obj[toInject] = "testdata"; 
+0

거기를? 나는 이것이 효과가 있다고 확신하지만 이유를 알기에 좋을 것이다;) – dmp

+0

obj [toInject]는 eval ("obj."+ toInject); 변수 toInject에 이름을 가진 속성을 설정합니다. : D –

+0

업데이트 주셔서 감사합니다. – dmp