[Javascript] 클래스 방식의 상속패턴 #2 - 생성자 빌려쓰기

목차

생성자 빌려쓰기는 자식에서 부모로 인자를 전달하지 못했던 패턴#1의 대응책이다.

이 패턴은 부모가 생성자 함수의 this에 자식 객체를 바인딩한 다음, 자식생성자가 받은 인자들을 모두 넘겨준다


※ 생성자 빌려쓰기 패턴은 부모 생성자 함수 내부의 this에 추가된 프로퍼티만 물려받고 prototype에 추가된 멤버는 상속되지 않는다


예제를 보면 쉽게 알 수 있다.


<소스>



<결과>

arguments의 타입을 찍은 것은 apply 메소드는 (this, 배열로 된 것) 만 인자로 넘겨 줄 수 있다

child 객체는 parent로 부터 this로 선언된 name은 받아왔지만 prototype으로 선언된 say() 함수는 받지 못한다.


여기서의 상속은 부모가 가진 자신만의 프로퍼티를 자식의 프로퍼티로 복사해주는 일회성 동작이고, __proto__ 라는 링크는 유지되지 않는다.

또한 다중상속도 가능하다. 여러개의 apply 함수를 이용하여 사용 할 수 있다.


생성자 빌려쓰기의 단점

프로토타입이 상속되지 않는 다는 것은 분명한 이 패턴의 한계점이다. 재사용되는 함수나 변수는 주로 프로토타입에 추가해야 하기 때문이다.

다음 장에서의 상속패턴은 이 문제를 해결한다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유