콘텐츠로 이동

2021 12 06

2021-12-06

코어 자바스크립트 [6장. 프로토타입]

  • 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이 연결하고자 하는 상위 생성자 함수의 인스턴스를 바라보게끔 함