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를 이용해서 상속을 구현한다고 한다.
이 부분에 대해서는 좀 더 알아봐야겠다.
'개발 > FrontEnd Interview' 카테고리의 다른 글
nullish coalescing operator (||와 ?? 차이) (0) | 2021.08.22 |
---|---|
리액트에서의 effect란? (0) | 2021.08.22 |
general function vs arrow function (0) | 2021.08.22 |
자바스크립트가 Prototype 기반 언어라서 얻는 이점은? (0) | 2021.08.22 |
iframe 사용에 대해서 (0) | 2021.08.21 |