본문 바로가기

JavaScript/JS 초급&개념

[JS] 7장. 자바스크립트 상속 패턴

반응형

(1) 기본 패턴

기본 패턴: 생성자의 정의를 안해서 문제
kid.say를 하면 Adam이 나옴

(2) 생성자 빌려쓰기

생성자 빌려쓰기: 프로토타입 연결이 안됨

function Child(name) {
  Parent.apply(this, arguments)
}

class Child extends Parent {
  constructor() {
    super();
  }
} // 와 유사

// kid.say를 못함

(3) 생성자 빌려쓰고 프로토타입 지정

생성자 빌려쓰고 프로토타입 지정: 괜찮지만 Parent 너무 많이 호출

function Child(name) {
  Parent.apply(this.arguments);
}
Child.prototype = new Parent();
부모가 계속 new가 됨

(4) 프로토타입 공유

프로토타입 공유: 단점은 자식이나 손자뻘 객체가 프로토타입을 수정할 경우, 모든 부모와 손자뻘의 객체가 영향을 받음

function inherit(C, P) {
  C.prototype = P.prototype;
}

(5) 임시 생성자

function inherit(C, P) {
  var F = function() { }
  F.prototype = P.prototype;
  C.prototype = new F();
  C.prototype.constructor = C; // 원하는 생성자 함수를 가리키도록 재설정
}
반응형