whatisthis?

javaScript. 클래스 vs 프로토타입 ( ▪ 생성자 ) 본문

WEB STUDY/JAVASCRIPT

javaScript. 클래스 vs 프로토타입 ( ▪ 생성자 )

thisisyjin 2022. 1. 22. 13:05

생성자(constructor)

 

Date객체를 new Date()로 만들듯이,

new를 붙이고 객체를 함수처럼 호출 하는 것이 바로 생성자 함수이다.

 

 

- 다른 언어에서는 class(클래스)가 존재하지만, 자바스크립트에서는 존재하지 않음.

- ES2015 에서 클래스가 최초로 등장했지만, 다른 언어와는 다름. (겉만 클래스인 느낌. 그대로 프로토타입을 따름)

 


 

 

 

클래스 vs 프로토타입

 

자바스크립트에는 클래스라는 개념이 없고, 기존의 객체를 복사(cloning)하여 새로운 객체를 생성하는

프로토타입 기반의 언어이다.

 

- 프로토타입 기반 언어는 객체의 원형인 프로토타입을 이용하여 새로운 객체를 생성함.

- 그렇게 생성된 객체 역시 또 다른 객체의 원형이 될 수 있음.

 

 

 

 


 

 

 

📌 프로토타입

1) 프로토타입 객체를 참조하는 prototype 속성

2) 객체 멤버인 __proto__ 속성이 참조하는 숨은 링크 (자신의 원형)

 

 

- 자바스크립트에서는 기본 데이터타입을 제외한 모든 것이 객체이다.

- for. 객체의 생성 - 원형(프로토타입 객체)을 이용하여 만듬.

- 이때 만들어진 객체 안에 __proto__속성이 자신의 원형을 의미하는 프로토타입 객체를 참조하는 숨겨진 링크.

 

 

 

📌 코드의 재사용

- 자바에서는 중복된 코드를 상속(inherit)받아 코드 재활용을 할 수 있으나, (클래스가 있으므로)

- 자바스크립트에서는 클래스가 없는 프로토타입 기반이므로, 프로토타입을 이용하여 재활용 가능.

 

방법 1) new 연산자를 통해 생성한 객체를 사용하여 코드 재사용.

방법 2) 리터럴(new없이 생성) 또는 Object.create()를 이용하여 객체 생성 + 확장.

 

>> 자바스크립트에서는 방법2를 더 선호한다.

(더 간결하게 구현 가능하므로)

 

 

 

 

 


 

REFERENCE

 

 

 

JavaScript : 프로토타입(prototype) 이해

JavaScript는 클래스라는 개념이 없습니다. 그래서 기존의 객체를 복사하여(cloning) 새로운 객체를 생성하는 프로토타입 기반의 언어입니다. 프로토타입 기반 언어는 객체 원형인 프로토타입을 이

www.nextree.co.kr