프로토타입(prototype): 어디 게임에서나 들어 봤을 단어다.
자바스크립트는 흔히 프로토타입 기반 언어라고 불린다.
모든 객체들이 메소드와 속성을 받기 위한 템플릿으로써 프로토타입 객체를
가진다는 뜻이다.
즉, 클래스 Human의 .prototype은 프로토타입 객체이며,
인스턴스 steve의 .__ proto __ 역시 같은 프로토타입 객체인 것이다.그림처럼 하나의 프로토타입 객체가 자동으로 생성되어 있고
이 객체 하나만을 가지고 속성과 메소드들을 사용한다.
위와 같이 프로토타입을 쓰는 이유도 상세히 나와있다...
지금까지 사용했었던 배열의 경우에도 사실 배열을 생성하는것이 아닌
배열의 프로토타입에서 해당 메소드를 상속받아 사용하고 있었던 것이였다.
이 처럼 하나의 프로토타입에서 생성자는 상속을 받고,
인스턴스는 그의 속성과 메소드들을 사용할 수 있음으로써"객체 지향 프로그래밍"의 핵심 역할을 하고 있다고 할 수 있고,
왜 자바스크립트가 프로토타입 기반의 언어라고 불리는지 알 수 있었다.
.prototype은 생성자 함수에만 존재하는 프로퍼티이며,
.__proto__는 객체에만 존재하는 프로퍼티이다.
.prototype은 생성자 함수로부터 생성된 모든 객체가 상속받는 프로토타입 객체를 가리키며, .__proto__는 해당 객체를 생성한 생성자 함수의 프토로타입 객체를 가리킨다.