JS

보다 나은 자바스크립트 - 생성자

아거스 2010. 12. 9. 01:40

자바스크립트에는 class문이 없으며 객체를 생성하기 위해 class문을 사용 할 수 없습니다.

자바스크립트에서 객체를 생성하기 위해서는 new 연산자와 function을 사용합니다.

function Car(make, model, year) {
  this.make = make;
  this.model = model;
  this.year = year;
  this.toString = function() {
    return this.make + " " + this.model + " (" + this.year + ")";
  }
}
var myCar = new Car("Subaru", "Forester", 2003);
alert("My car was made in "+ myCar.year);

위 예제에는 파라미터 모델로 구성되었고(Car 함수라고도 불리우죠.), this라는 특별한 키워드를 사용하여 객체의 속성들을 생성하였습니다.

객체의 속성은 myCar.year처럼 점을 사용하거나 myCar['year']처럼 대괄호를 사용하여 접근 할 수 있습니다.
모든 객체는 위 예제에서의 Car 생성자와 같이 make, model, year, toString속성을 만들 수 있습니다.
자바의 public members와 같다고 생각하면 됩니다.

자바스크립트의 생성자는 함수이기 때문에 일반적인 함수의 특징 중 장점을 고스란히 사용 할 수 있습니다.
예를 들면 지역변수와 중첩함수가 있습니다.

위 예제에서 toString함수는 Car생성자 안에 선언되어 있으므로 속성으로 사용할 수 있고
myCar객체의 메서드로도 사용 할 수 있습니다.

객체가 생성되어지면 자바스크립트는 자동적으로 생성자 속성을 해당 객체에 부여하게 됩니다.

myCar.constructor == Car

위 의 값은 true입니다.