2012-06-27 3 views
1

다음 코드를 가지고 왜 다른 객체를 다른 객체 내에서 만들 수 없는지 궁금합니다.Javascript의 다른 객체 이니셜 라이저 내에 객체 이니셜 라이저를 사용할 수없는 이유는 무엇입니까?

코드는

//Object initializer 
    var shoe = { 
      size: 10, 
      make: var maketype = { 
       this.brand: "rebook" 
      }, 
      availability: "now" 
     } 
+0

HTTP와 같은 자바 스크립트 유효성 검사기를 사용하는 것이 좋습니다 : // jsHint.com. 코드가 유효하지 않습니다. –

+0

@ 나는 아닙니다 - 나는 코드를 돌았지만'var'와'this'는 객체 이니셜 라이저에서 사용하는 것은 불법이라는 오류 목록에서 결코 알지 못했을 것입니다. – PeanutsMonkey

+0

* "예상 된 식별자이고 대신 var ' "* ... 요점까지 꽤 똑바로 보인다. 어쨌든 유효성 검사기는 매우 유용 할 수 있습니다. –

답변

3

당신은 아주 잘 그렇게 할 수 있습니다. 불법 인 추가 var maketype =입니다 (또한 속성 이름의 일부로 this).

이 작동 : 당신이 make에 대한 별도의 참조를 유지하려면

var shoe = { 
     size: 10, 
     make: { 
      brand: "rebook" 
     }, 
     availability: "now" 
    } 

, 당신은 이런 식으로 작업을 수행 할 수 있습니다

var maketype = { brand: "reebok" }, 
    shoe = { 
     size: 10, 
     make: maketype, 
     availability: "now" 
    } 
+0

'var'을 제거하면'SyntaxError : Unexpected token .'에서 this.brand : "rebook"오류가 발생합니다. – PeanutsMonkey

+0

@PeanutsMonkey :'this' 또한 그 맥락에서 불법입니다. 명확히하기 위해 편집 됨. – Jon

+0

그래서 객체 이니셜 라이저에'this'를 사용할 수 없습니까? 그것은'this'가 생성자 함수로 제한된다는 것을 의미합니까? – PeanutsMonkey

관련 문제