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; }