객체생성을위한 함수를 생성자함수라 한다.
자바스크립트에는 일반함수와 생성자함수의 기술적차이가 없다.
따라서 아래와 같은 2가지 관례에따르면 생성자함수라 부른다.
1. 함수명 첫글자를 대문자로 한다.
2. this지시자를 사용하여 객체프로퍼티를 설정한다.
new지시자 역활 : new지시사로 함수가 호출되면 빈객체를 생성하고 this는 생성객체에 바인딩되어 프로퍼티가 추가된후 생성객체를 반환한다.
function User(name:string) {
this.name = name;
this.sayHi = function () {
console.log(this.name);
};
}
생성자함수내에 프로퍼티를 선언하면 생성된 객체들마다 프로퍼티를 가지는것은 객체크기가 증가하기 때문에 바람직하지 않다.
function User(name:string) {
this.name = name;
}
User.sayHi = function () {
console.log(this.name);
};
자바스크립트에서 User는 함수이고 함수는 객체이기때문에 위와 같이 User함수에 프로퍼티를 정의할 수 있다.
생성자함수내에 정의된 프로퍼티만 생성되는 객체프로퍼티로 추가된다.