학생 리스트를 만들어야 한다고 가정해 보자.
var 학생1 = { name : 'Kim', age : 15 };
var 학생2 = { name : 'Park', age : 15 };
...
30명 만들어야할 때, 위처럼 하드코딩 30개 하는 것 보다
비슷한 오브젝트들이니 복사를 하는게 더 효율적이다.
근데 할당 연산자 ‘=’ 를 이용해 var학생2 = 학생1 이라고 복사할 경우,
의도한 결과가 아니다.
이 때 사용할 수 있는 것이 constructor 문법이다.
function 키워드를 이용해 함수를 만들고
그 안에 this.name 과 this.age를 집어 넣는다.
이 때 this 는 새로 생성된 오브젝트(인스턴스, instance)를 뜻한다.
//var 학생1 = { name : 'Kim', age : 15 };
function 기계(){
this.name = 'Kim';
this.age = 15;
}
var 학생1 = new 기계();
var 학생2 = new 기계();
new 라는 키워드를 사용해 변수에 할당하면 새로운 오브젝트를 만들 수 있다.
생성자 함수에 함수도 올 수 있다.
function 기계(){
this.name = 'Kim';
this.age = 15;
this.sayHi = function(){
console.log('안녕하세요' + this.name + ' 입니다');
}
}
var 학생1 = new 기계();
var 학생2 = new 기계();
학생2.sayHi();
지금까지의 오브젝트들은 모든 name이 똑같아서 실용성이 없었다.
이를 위해 파라미터를 추가해 각 인스턴스가 각각의 값을 가지게 할 수 있다.
function 기계(이름){
this.name = 이름;
this.age = 15;
this.sayHi = function(){
console.log('안녕하세요' + this.name + ' 입니다');
}
}
var 학생1 = new 기계('Park');
var 학생2 = new 기계('Kim');