2013-07-12 7 views
1

Backbone.js는 내 프로젝트에 유용 할 것으로 생각하므로 배우고 있습니다.Backbone.js : 클래스 초기화 (JSON 형식)의 차이점

나는 다른 튜토리얼을 통해 실행 그리고 난의이 같은 클래스의 차이 최고의 선언을 찾을 수 없습니다 :

var me = new Person({name: 'Andy'}); 

나 :

Person = Backbone.Model.extend({ 
    defaults: { 
     name: 'Andy', 
     age: 25, 
     occupation: 'Whatever...' 
    } 
}); 

클래스 이런 식으로 초기화하는 것이 좋습니다를

var me = new Person({'name': 'Andy'}); 

왜 변수를 설정하려면 작은 따옴표를 사용해야합니까? 더 많은 시간이 걸리지 만 가장 좋은 무엇입니까? 옳고 그 이유는 무엇입니까? JSON 문제인지 또는 백본 문제인지는 확실하지 않습니다. 실제로 이것이 초기화 및 중괄호 사용 문제입니다. .set(var, value)을 사용하는 경우 변수에 따옴표가 없으므로 백본에서 변수를 찾는 중 오류가 발생합니다.

Backbone.js 웹 사이트 및 JSON 웹 사이트를 살펴 보았지만 이에 대한 답변을 찾을 수 없습니다.

+2

NB : * JSON (데이터 형식)이 아닙니다. JavaScript 객체 리터럴입니다. JSON에서 큰 따옴표 키가 필요하지만 @McGarnagle이 가리키는 것처럼 JS 객체 리터럴에는 큰 따옴표 나 작은 따옴표가 필요하지 않습니다. – nrabinowitz

답변

2

우리가 현학적 인 경우 유효한 JSON은 모든 키에 대해 작은 따옴표가 필요합니다. 예를 들어, JSLint는 따옴표없이 JSON을 거부합니다.

하지만 Javascript에서는 필요하지 않으며 대부분의 사람들은 그들을 제외합니다 (당신이 지적한대로 그것은 더 간결합니다). 예를 들어, { name: 'Andy' }은 괜찮지 만 { first-name: 'Andy' }은 파서를 보크하게 만듭니다. 예를 들어, -과 같은 이름의 문자를 예약하지 않았다면 말입니다.

+2

위의 JSON에서 내 노트를 참조하십시오. 또한 인용되지 않은 예약어가 나쁜 소식이라는 점에 유의할 가치가 있습니다.'{if : "spam"}'은 구문 오류입니다. – nrabinowitz

+0

@nrabinowitz 알 수 있습니다. 완전히 이해가 되더라도 if와 함께 시도해 보니 오류가 발생하지 않습니다. 것이 가능하다? –

+1

따옴표로 묶으면 오류가 발생하지 않습니다. 인용 부호가없는 대부분의 JS 파서는 구문 오류를 발생시킵니다. – nrabinowitz