2014-09-29 3 views
1

개체 temp에 2 수준 계층을 만들어야합니다.개체에 데이터를 추가하는 동안 정의되지 않은 var

var temp = {}; 
temp['mailboxes'].push("First"); 

다음 코드는 나에게 no method push of undefined 없다는 오류를 제공하고 내가 배열을 사용할 때/객체들이 먼저 선언해야한다는 것을 알고 있기 때문에 이것은 이해할 수있다 : 그리고 난 다음 물품. 이 작업을 수행하는 직접적인 방법이 없으므로 var를 사용하기 전에 동일한 선언을하지 않아도됩니다.

예를 들어, 내가 일을하지 않도록하는 것이 좋습니다 :

var temp = {}; 
temp['mailboxes'] = []; 
+0

JS 엔진은 어레이를 원한다는 것을 어떻게 알 수 있습니까? – zerkms

답변

2

var temp = { mailboxes: [] }

를 지금까지 내가 자바 스크립트 파이썬의 defaultdict 같은 디폴트 값을주는 쉬운 방법이 없습니다 알고있다.

1

을 수행하는 올바른 방법은 같은 객체의 사서함 배열을 선언하는 것입니다 : 당신이 당신의 배열의 값을 누르면

var temp = {mailboxes: []}; 

이 방법을 있습니다 .. JS 엔진은 값을 밀어 위치를 알 수 . 먼저 선언하지 않고는 할 수 없습니다. 당신이 원하는 것은 빈 객체의 정의되지 않은 필드에서 값을 푸시하는 것입니다. 그러면 오류가 발생합니다.

0

아마도 이것이 당신이 내용을 조작하기 전에 먼저 개체 속성을 초기화 할 필요가

var temp = {}; 
temp.mail = new Array(); 

temp.mail.push("email"); 
temp.mail.push("email"); 

도움이 될;