
자바스크립트는 프로토타입 기반 언어입니다.
어떤객체를 원형(protype)으로 삼고 이를 복제함으로써 상속과 비슷한 효과를 얻는다.
생성자 함수를 new와 함께 호출하면 인스턴스가 생성되고 생성된 인스턴스는 __proto__ 프로퍼티를 가지는데 __proto__는 생성자함수의 prototype을 참조합니다.(prototype은 객체이며 인스턴스가 사용할 메서드를 저장한다, --proto__도 객체)
lion.(__proto__).age = lion.age 즉, __proto__는 생략이 가능하다.
__proto__ 가 생성자함수의 prototype을 참조하므로 __proto__는 protype의 메서드도 사용할수 있다.
prototype 은 객체기 때문에 모든 타입은 object.prototype이 연결된다.
(즉, 모든타입은 object.prototype의 메서드를 사용할수 있다. )
어떤 데이터의 --proto-- 프로퍼티 내부에 다시 --proto-- 프로퍼티가 연쇄적으로 이어진 것을 프로토타입 체인이라고 하고, 이 체인을 따라 검색하는 것을 프로토타입 체이닝 이라고 한다.

어떤 생성자 함수든 prototype은 객체이기 때문에 object.prototype은 어디서든 접근할수 있으며, 이러한 특징 때문에 객체 전용 메서드는 스태틱하게 담겨있다.
프로토타입 체인은 무한대의 단계를 생성할수도 있다.