1. 프로토타입의 개념 이해
- 프로토타입 기반 언어에서는 어떤 객체를 원형으로 삼고, 이를 복제함으로써 상속과 비슷한 효과 얻음
- 생성할 때 프로세스
1. 어떤 Constructor를 new 연산자와 함께 호출하면
2. Constructor에서 정의된 내용을 바탕으로 새로운 Instance 생성
3. 이때 Instance는 __proto__ 라는 프로퍼티가 자동으로 부여됨
4. 이 프로퍼티는 Contructor의 prototype이라는 프로퍼티를 참조
- __proto__는 생략 가능한 프로퍼티임, 그냥 인스턴스에서 해당 API 직접 호출 가능
- 생성자 함수의 프로퍼티인 prototype 객체 내부에는 constructor 프로퍼티가 있음
- 인스턴스로 부터 그 원형이 무엇인지를 알 수 있는 수단
2. 프로토타입 체인
- 인스턴스가 동일한 이름의 프로퍼티 또는 메서드를 가지는 경우는 어쩌지?
- 어떤 메서드를 호출하면, JS 엔진은
1. 데이터 자신의 프로퍼티들을 검색하여 원하는 메서드 있으면 실행
2. 없으면 __proto__를 검색해 있으면 실행
3. 없으면 다시 __proto__를 검색해 실행
- 대각선의 __proto__를 연결해나가면 체인관계를 이어나갈 수 있음
- 클래스와 비슷하게 동작하는 구조를 만들 수 있음
- __proto__가 가리키는 대상, 즉 생성자 함수의 prototype이 연결하고자 하는 상위 생성자 함수의 인스턴스를 바라보게끔 함