더북(TheBook)

함수 프로퍼티를 생성자 함수의 프로토타입에 붙일 수도 있다. 생성자 함수의 프로토타입에 함수를 정의하면 객체 인스턴스를 대량 생성할 때 함수 사본 개수를 한 개로 제한하여 메모리 점유율을 낮추고 성능까지 높이는 추가 이점이 있다.

예제 3-7은 생성자 함수 프로토타입에 함수 프로퍼티를 추가하는 코드다. 각 객체 인스턴스가 함수 구현부를 공유한다는 사실을 알 수 있다.

예제 3-7 생성자 함수 프로토타입에 함수를 추가

소스 파일 3장\New Pattern\newpattern_05.js

function Marsupial(name, nocturnal) {
if (!(this instanceof Marsupial)) {
  throw new Error(“이 객체는 new를 사용하여 생성해야 합니다”);
}
this.name = name;
this.isNocturnal = nocturnal;
}
// 각 객체는 isAwake 사본 하나를 공유한다.
Marsupial.prototype.isAwake = function(isNight) {
return isNight === this.isNocturnal;
}
var maverick = new Marsupial(‘매버릭’, true);
var slider = new Marsupial(‘슬라이더’, false);
 
var isNightTime = true;
 
console.log(maverick.isAwake(isNightTime)); // true
console.log(slider.isAwake(isNightTime)); // false
 
// 객체들은 isAwake의 단일 인스턴스를 공유한다.
console.log(maverick.isAwake === slider.isAwake); // true

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.