생성자 함수를 이용해서 객체를 생성하면, 객체를 반복해서 생성할 때의 효율을 높일 수 있지만, 어쨌든 메모리가 그때마다 새롭게 할당되기 때문에, 메모리 면에서는 효율적이지 않다.
이런 문제를 해결하기 위해서 자바스크립트에서는 프로토타입이라는 특별한 프로퍼티를 이용한다.
프로토타입 공간 안에 메소드를 추가해주면, 이 메소드들은 객체를 생성할 때마다 새롭게 메모리가 할당되는 것이 아니라, 모든 객체가 해당 공간을 공유할 수 있다.
function Student(name, kor, eng) {
this.name = name;
this.kor = kor;
this.eng = eng;
}
// 한번에 정의
Student.prototype = {
getSum: function(){
return this.kor + this.eng;
},
getAverage: function(){
return this.getSum()/3;
}
}
// 하나씩 정의(앞에 정의된 prototype에 추가)
Student.prototype.changeName = function(name) {
this.name = name;
}