프로필 사진
왕기
bolt icon30·5년 이상·
1.4k
·수정됨
공유

[JS] [초보] 상속관련 질문

안녕하세요! Udacity 에서 Front end 나노디그리를 수강중인 학생입니다.
상속과 관련해서 궁금한 부분이 있어서 번거로우시겠지만 질문을 드리고자 합니다.


왕초보라 아직 이해가 부족한 부분이 많습니다. 따끔하게 지적해주시면 감사하겠습니다!



Udacity 에서 Front-end(nanodegree) 과정을 수강하고 있는데, instantiate 과 관련한 부분에서 궁금한 점이 생겨 질문드립니다.🤷‍♀️

amy = new Car(1); ben = new van(1); amy.move(); ben.move();

Javascript

위와 같이 Car 과 Van class의 instance인 amy 와 ben 이 있습니다. 두 instance의 .move 라는 method 시행하고자 합니다.

Van과 Car의 constructor 는 다음과 같이 정의되어 있습니다.

var Car = function (loc) { this.loc = loc; }; Car.prototype.move = function(){ this.loc++; }; var Van = function(loc){ Car.call(this,loc); };

Javascript

Udacity 에서 설명하는대로라면, 첫 번째 코드 블럭의 3번 째 줄( amy.move) 에서

1.

amy.move() 를 시행한다.

2.

amy 에게는 .move 라는 method가 없다. 실행 실패.

3.

실패한 lookup을 상위(?) 에 있는- 혹은 상속받은(?)- Car.prototype 에서 찾는다.

4.

Car.prototype 은 .move 라는 method를 실행한다. (this = amy)

하지만, Van 의 instance ben 은 .move 가 되지 않습니다. Car.prototype과의 연계되어 있는 부분이 없기 때문일텐데요. (이 부분은 제가 잘못이해한 것이 있을까하여 코드를 설명해 둔 것입니다)

🙋 질문

1.

console.log(ben.loc) 의 값은 잘 나오는데요. Van의 constructor에는 Car.call(this,loc); 한 줄 밖에 없습니다. 이 constructor에서 Return 되는 것이 Car.call 의 Return 값인가요?

2.

그리고 ben.move 가 동작하게 하려면 아래 코드를 추가하면 되는데요, 이 코드는 Best option이 아니라고 합니다.

Van.prototype.__proto__ = Car.prototype;

Javascript

이 코드가 좋지 않은 이유가

퍼포먼스에 영향을 미치는 요소가 있기 때문인가요?

혹은 오류의 가능성이 있어서 일까요?

코드가 명확하지 않기 때문일까요?

엉망인 설명 읽어주셔서 감사합니다 ㅜ 답변 부탁드리겠습니다

1
cat-footer