자바스크립트는 프로토타입 기반 언어이다. 클래스 기반 언어이다.
클래스 기반 언어에서는 ‘상속’을 사용하지만 프로토타입 기반 언어에서는 어떤 객체를 원형(프로토타입)으로 삼아 이를 복제(참조)함으로써 상속과 비슷한 효과를 낸다.
prototype은 객체이다. 당연히 __proto__도 객체이다. prototype 내부에는 인스턴스가 사용할 메소드를 저장한다. 그러면 인스턴스에서도 숨겨진 프로퍼티인 __proto__를 통해 이 메소드들에 접근할 수 있게 된다.
but
실무에서는 __proto__사용하지 않기를 권장한다
대신에
Object.getPrototypeOf() / Object.create() 등 사용하는 것이 좋다.