JS의 모든 객체는 부모를 갖고 있고, 부모와 연결되어 있습니다.
이로 인해 객체지향 프로그래밍의 상속 개념과 같이 부모의 프로퍼티, 메서드를 물려받아 사용할 수 있습니다.
이 때 부모 객체를 가르켜 Prototype 객체 또는 prototype이라고 합니다.
Prototype을 사용하는 이유는
생성자 함수로 생성된 객체 모두에 프로퍼티, 메서드를 공유하기 위해서입니다.
상속을 구현할 수 있습니다.
proto와 prototype은 프로퍼티이며, 이 두 프로퍼티가 가르키는 객체를 prototype 객체라고 합니다.
proto는 사실 크롬 브라우저에서 사용하는 프로퍼티명이고, ECMA 명세서에는 [[Prototype]]이라는 이름으로 사용합니다.
proto와 prototype에 대한 관계는 다음과 같습니다.
proto
모든 객체가 갖고 있는 프로퍼티
부모의 prototype 프로퍼티에 대한 정보를 의미 ( prototype link )
prototype
함수만 갖고 있는 프로퍼티 ( 함수도 객체이므로 proto를 갖고 있음 )
자신의 prototype 객체이며 자식 객체는 이를 참조함