Thief of Wealth
function A () {
  this.a = "a";
}

A.prototype.aa = "aa";

function B () {
  this.b = "b";
}


B.prototype = new A();
or
B.prototype = Object.create(A.prototype)
B.prototype.constructor = B;


var b = new B();

 

B가 A를 상속하고 있다.

근데 상속하는 방법은 2가지로 나뉜다.

 

첫번째는 B의 prototype으로 new 연산으로 A를 주는것.

두번째는 B의 prototype으로 Object.create()에 A의 프로토타입을 주는 것이 있다.

 

둘다 b객체가 A의 prototype인 aa를 부를 수 있다.

 

하지만, b.a는 new 연산으로 B prototype에 주었을 때만 접근이 가능하다.

 

그 이유는, Object.create는 생성자함수를 실행시키지 않아서 A 내부의 값들을 참조하지 않기 때문이다.

 

그럼 new 연산자를 쓰는게 더 낫지 않나? 라는 생각을 했는데

일반적으로 Object.create를 이용해서 상속을 구현한다고 한다.

 

이 부분에 대해서는 좀 더 알아봐야겠다.

 

profile on loading

Loading...