JavaScript 문법 - 메서드 상속 및 동작원리(prototype)

백엔드·2020년 11월 22일
0

Javascript 문법

목록 보기
13/16

😎 메서드 상속 및 동작원리에 대해서 알아보자

자, 먼저 위 코드의 반복을 줄여 리펙토링을 하고 싶다🤦‍♂️

반복을 줄이기 위해서 prototype로 메서드를 이동시켰다

prototype로 메서드를 이동시켜 instancce의 __proto__로 접근이 가능해졌다.

🤷‍♀️ 그러나, 위 상황에서 __proto__를 명시적으로 표기해 setOler, getAge 메서드에 접근하는 경우, this가 가리키는 값은 __proto__가 된다.

그러므로 이렇게 접근 할 경우 NaN이 나온다

하지만 우리는 앞서 살펴봤듯 __proto__생략 가능하다는 것을 안다.

그렇기에 __proto__를 생략하여 마치 자신의 것처럼 메서드를 호출할 수 있게 해준다.

이렇게 되면 this는 gomu를 가리키게 되고 정상적으로 출력이 가능하게 된다.


🎬 prototypeage property가 있을 경우

그러나, prototype의 age라는 property가 있다고 가정하면, 결과가 달라진다.

__proto__를 명시적으로 표기한 setOlder, getAge 메서드의 경우, this__proto__를 가리키므로 getAge는 101을 출력하게 된다.

반면 __proto__를 명시적으로 표기하지 않은 setOlder, getAge 메서드의 경우, this가 gomu를 가리키므로 getAge는 31을 출력하게 된다.

메서드 호출시에 this가 어떻게 바인딩되는지를 상기하면 당연한 결과일 것이다.

ref

profile
백엔드 개발자

0개의 댓글

관련 채용 정보