더북(TheBook)

3.6.2 반복이 캥거루 잡네

예제 3-8처럼 고전적 상속을 흉내 내면 코드 반복과 메모리 점유는 피하기 어렵다. Marsupial 인스턴스를 Kangaroo 함수의 프로토타입에 할당하는 장면을 다시 보자.

Kangaroo.prototype = new Marsupial();

 

Marsupial 생성자 함수에 인자가 하나도 없다. Kangaroo의 프로토타입을 지정하는 시점은 물론이고 Kangaroo 인스턴스가 만들어지기 전까지 어떤 인자가 올지 알 길이 없다.

프로토타입 지정 시 인자를 알 수 없으므로 Marsupial 함수의 프로퍼티 할당 작업은 Kangaroo 함수에서도 되풀이된다.


function Marsupial(name, nocturnal) {
if (!(this instanceof Marsupial)) {
  throw new Error(“이 객체는 new를 사용하여 생성해야 합니다”);
}
this.name = name;
this.isNocturnal = nocturnal;
}
 
function Kangaroo(name) {
if (!(this instanceof Kangaroo)) {
  throw new Error(“이 객체는 new를 사용하여 생성해야 합니다”);
}
 
// name과 isNocturnal 프로퍼티를 반복해서 할당한다!
this.name = name;
this.isNocturnal = false;
}

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