프로토타입이란
- 모델의 청사진(클래스)을 만들 때 쓰는 원형 객체
- JavaScript는 프로토타입 기반 언어
__proto__
prototype
- 상속 시키려는 멤버(상속 받는 멤버)들이 정의된 객체
- 프로토타입 체인을 통해 상속하고자 하는 속성과 메소드를 담아두는 버킷으로 사용
-> 객체 내부에 인스턴스가 사용할 메서드 저장
- 상속되는 속성과 메서드는 각 객체가 아닌 객체의 생성자의 prototype이라는 속성에 정의됨
- 프로토타입에는 다양한 메서드 존재
클래스, 인스턴스, 프로토타입의 관계

- new 연산자로 생성자 함수를 호출해 새로운 인스턴스를 변수 person1에 할당
- 인스턴스의
__proto__
(프로토타입 체인에 의해 생략)가 생성자의 prototype
속성을 참조 -> person1.__proto__
.greeting() 이 아닌 person1.greeting() 으로 prototype에 있는 메소드에 접근 가능
- 인스턴스는 생성자 함수의 prototype에 있는 속성이나 메소드에 접근 가능
- 생성자 함수의 속성인 prototype 객체 내부에 있는 constructor 속성
-> 생성자 함수 참조, 이 속성을 통해 인스턴스의 원형을 알 수 있음