본문 바로가기

TIL/JavaScript

prototype(프로토타입)

 

자바스크립트는 프로토타입(원형 객체) 기반 언어이다.

js의 모든 객체들은 프로토타입으로,

상위 프로토타입 객체로 부터 하위 프로토타입 객체는 메소드와 속성을 상속받을 수 있다.

(이는 그 위로 몇개의 객체가 있든 가능하다.)

이를 우리는 프로토타입 체인 이라고 부르며,

다른 객체에 정의된 메소드와 속성을 한 객체에서 사용할 수 있는 이유이다.

 

>> 상속되는 속성과 메소드는 객체의 생성자의 prototype 이라는 속성에 정의되어있는 것.

 

 

  • 클래스, 인스턴스, 프로토타입의 관계 (.prototype, __proto__)

위와 같이 Menu 라는 클래스에 americano 라는 인스턴스까지 만든 모습일 때를 생각한다.

Menu 라는 클래스를 만들면서 우리는 prototype 이라는 객체를 만든적이 없지만, 자연스럽게 Menu의 prototype 객체가 생긴다.

Menu 안의 속성 prototype은 prototype 객체를 가리키고, Menu의 prototype 객체의 constructor은 Menu 클래스를 가리킨다.

 

그 뒤, 우리는 americano 인스턴스를  생성한다.

americano 에는 클래스 Menu 속성들도 들어가지만, __proto__ 라는 속성도 같이 생긴다. 이는 Menu의 prototype 객체를 가리킨다.

 

 

클래스에서는 Menu.prototype 으로 인스턴스에서는 americano__proto__ 로 prototype 의 객체에 접근할 수 있는 것.

 

 

 

 

 

 

 

 

 

'TIL > JavaScript' 카테고리의 다른 글

extend, super  (0) 2023.01.16
프로토타입 체인  (0) 2023.01.14
객체 지향 프로그래밍(OOP)  (0) 2023.01.13
객체 지향 프로그래밍 (클래스와 인스턴스) in JS  (0) 2023.01.13
함수  (0) 2022.12.23