상속(Inheritance)이란?
- 특정 개체의 로직을 그대로 물려받는 또 다른 객체를 만들수 있는 기능
- 단순히 물려받는 것은 의미가 없기 때문에
기존의 로직을 수정해서 파생된 새로운 객체를 만들 수 있게 해준다.
JavaScript의 prototype
- JavaScript에서 상속을 할 때 사용되는 구체적인 수단
prototype chain이란?
- 특정 개체의 값을 사용하려 했는데 해당 값이 정의되어 있지 않다면
상속 받은 prototype들을 점점 거슬러 올라가면서 해당 값을 찾아내는 것
방금 전의 코드를 통해서 console.log(c.locationText);가 실행된 과정을 알아보자.
- 우선 c.locationText이기 때문에 c라는 객체에서 locationText라는 값이 정의되있는가를 찾아본다.
- c.locationText가 없다면 c의 원형인 Children의 prototype에서 locationText 값이 정의되있는가를 찾아본다.
- Children의 prototype에도 locationText이 정의 되어있지 않다면
Children이 상속받은 Parent의 prototype에서 locationText 값이 정의되있는가를 찾아본다. - Parent의 prototype에도 locationText이 정의되어 있지 않다면
Parent가 상속받은 GrandParent의 prototype에서 locationText 값이 정의되있는가를 찾아본다. - GrandParent의 prototype에 locationText가 정의되어 있기 때문에 그 값을 리턴한다.
이렇게 차례대로 연관되어 거슬러 올라가며 상속받은 protype들을 찾는 것이 prototype chain이다.