프로토타입(Prototype)이란..?
프로토타입은 원래의 형태 또는 전형적인 예, 기초 또는 표준이다.
자신을 만들어낸 객체의 원형
- 자바스크립트는 프로토타입 기반으로 상속을 구현하여 불필요한 중복을 제거
- 생성자 함수가 생성한 모든 인스턴스가 공통적으로 사용한 프로퍼티나 메소드를 프로토타입에 미리 구현해 놓음으로써 또 구현하는 것이 아닌 상위 객체인 프로토타입의 자산을 공유하여 사용하는 것
const x = {};
const y = {};
console.log(x.__proto === y.__proto);
Prototype Chain
- 객체의 프로퍼티에 접근하려고 할 때 객체에 접근하려는 프로퍼티가 없으면 접근자 프로퍼티가 가리키는 링크를 따라 상위 프로토타입의 프로퍼티를 순차적으로 검색하는 것
Class (프로토타입의 연쇄작용)
- 자바스크립트에서 class는 디자인 패턴의 일종 (다른 언어들과 의미가 다름)
- 자바스크립트 class는 복사를 의미 (프로토타입의 연쇄작용)
- 인스턴스화하면
class -> instance
로 복사가 일어난다.
- 클래스를 상속하면 역시
parent -> child
방향으로 복사된다.
- 다형성은 얼핏 보면
parent -> child
방향의 상대적 레퍼런스가 아니라 복사 작업의 결과물