도플광어의 backbone.js 강좌 - 2. model part2

|

이전 강좌에서 모델객체를 상속받아 객체를 초기화하고 기본적인 기능을 전반적으로 다뤄 보았습니다. 강좌를 쓴 시점이 저도 백본을 막 도입해서 쓴 시기라서 제데로 이해를 하지못하고 쓴부분이 있어서 하나 하나 다시 집어 보며 자세히 다시 써볼 계획입니다.


이번에는 백본오브잭트의 멤버에 접근하는 기초적인 방법에 대해서 자세히 알아보도록 하겠습니다.


백본으로 만든 오브잭트의 멤버에 접근하기 위해서는 get,set 함수를 사용할 수 있습니다.


                

                var Person = Backbone.Model.extend({

                    initialize: function() {

                        console.log('wellcome');

                        console.log(this.attributes.name);

                        //console.log(this.name);

                    }


                });


Person 은 변수이지만 동시에 객체를 선언하는 클래스입니다. 자바스크립트는 프로토타입방식의 객체지향언어이기때문에 이와같이 클래스 기반 언어와는 다른 특징이 있습니다.

백본의 Model.extend 함수로 백본모델로부터 상속받은 프로토타입핑클래스오브잭트(객체를 찍어낼수있는 객체 개념 정도?)를 만들수 있습니다.


                var person = new Person({name: 'tom', age: 37, children: ['lyn']});

 

Person을 가지고 인스턴스 오브잭트를 만들었습니다. person 은 Person의 인스턴스 입니다.



                console.log(person.get('name'));

                console.log(person.attributes.name);


get('name') 또는 attributes.name 로 값을 읽을 수 있습니다. 두 문장은 완전히 같은 일을 합니다.


person.attributes.job = 'js developer'

person.set('job','js developer');


set 함수로 값을 써넣을 수 있습니다.


person.name = 'tommy' 와 같이 값을 직접 넣을수도있지만 그렇게 되면 백본에 의해서 관리 밭을 수 없습니다.

예를 들어 이렇게 되면 name 이라는 멤버를 다루기 위해서 set,get 함수를 사용할 수 없습니다.(물론 person에 붙어서 존재는 합니다.)

그리고

attributes 로 직접 접근하는 것보다는 get,set 을 써서 간접적으로 접근하는 편이 좀더 유연하게 코드를 관리할거같습니다.




And