2012-03-19 3 views
8

이 구문을 사용하는 백본 JS의 장점/이유는 무엇 속성백본 JS 차이는

//using a Model instance called model 

model.get('attribute') 

하지

model.attribute 
임은 백본을 사용하기 시작

그리고 나는 항상 속성에 직접 액세스하려고합니다.

답변

12

소스 코드를 보면 get 함수는 this.attributes[name]을 호출합니다.

http://backbonejs.org/docs/backbone.html#section-31

이점은, 그러나, 적어도 두 가지이다 :

1)가)

2를 오버라이드 (override) 할 수있는 기능을 작성하는 코드의 양을 줄여 일관된 API get 메서드를 사용하고보다 복잡한 액세스 제어를 제공합니다.

예를 들어 중첩 모델 기능을 제공하기 위해 모델 작동 방식을 재정의하는 백본에 대한 플러그인이 몇 가지 있습니다.

model.get("submodel.attr")

을하고는 submodel 하위 모델의 attr을 구문 분석이 있습니다 그들이 당신이 같은 get 메소드를 작성할 수 있도록하는 것이 매우 쉽다. get 메소드가 없으면 API와의 일관성을 유지하는 것이 더 어려울 것입니다.

이 기본 이점은 캡슐화입니다. JavaScript가 getter 및 setter에 대한 코드를 작성하는 데 필요한 실제 get/set 속성을 제공 할 때까지는 Backbone의 getset과 같은 해결 방법이 필요합니다.

+1

대신에 model.attributes[attribute]을 사용하는 습관을 갖고 있다면 이것을 잊을 가능성이 높습니다. user.name ('name') vs'user.name'가 코드 양을 줄이는 방법을 명확히 할 수 있습니까? –

+0

그는 당신이 더 길다는'user.attributes [ 'name']'대신에'user.get ('name')'을 사용했다는 것을 알 것입니다. 그러나 중첩 모델에 액세스하려면 다음 구문을 사용합니다.'user.attributes.name.first' – orad

2

음 .. 처음에는 model.attribute이 맞지 않습니다. 화재가 발생하기 위해서는 change 이벤트를 받으려면 model.set()이 필요합니다. model.get(attribute)