whatisthis?
javaScript. 클래스 vs 프로토타입 ( ▪ 생성자 ) 본문
생성자(constructor)
Date객체를 new Date()로 만들듯이,
new를 붙이고 객체를 함수처럼 호출 하는 것이 바로 생성자 함수이다.
- 다른 언어에서는 class(클래스)가 존재하지만, 자바스크립트에서는 존재하지 않음.
- ES2015 에서 클래스가 최초로 등장했지만, 다른 언어와는 다름. (겉만 클래스인 느낌. 그대로 프로토타입을 따름)
❕ 클래스 vs 프로토타입
자바스크립트에는 클래스라는 개념이 없고, 기존의 객체를 복사(cloning)하여 새로운 객체를 생성하는
프로토타입 기반의 언어이다.
- 프로토타입 기반 언어는 객체의 원형인 프로토타입을 이용하여 새로운 객체를 생성함.
- 그렇게 생성된 객체 역시 또 다른 객체의 원형이 될 수 있음.
📌 프로토타입
1) 프로토타입 객체를 참조하는 prototype 속성
2) 객체 멤버인 __proto__ 속성이 참조하는 숨은 링크 (자신의 원형)
- 자바스크립트에서는 기본 데이터타입을 제외한 모든 것이 객체이다.
- for. 객체의 생성 - 원형(프로토타입 객체)을 이용하여 만듬.
- 이때 만들어진 객체 안에 __proto__속성이 자신의 원형을 의미하는 프로토타입 객체를 참조하는 숨겨진 링크.
📌 코드의 재사용
- 자바에서는 중복된 코드를 상속(inherit)받아 코드 재활용을 할 수 있으나, (클래스가 있으므로)
- 자바스크립트에서는 클래스가 없는 프로토타입 기반이므로, 프로토타입을 이용하여 재활용 가능.
방법 1) new 연산자를 통해 생성한 객체를 사용하여 코드 재사용.
방법 2) 리터럴(new없이 생성) 또는 Object.create()를 이용하여 객체 생성 + 확장.
>> 자바스크립트에서는 방법2를 더 선호한다.
(더 간결하게 구현 가능하므로)
REFERENCE
'WEB STUDY > JAVASCRIPT' 카테고리의 다른 글
javaScript. (9) 배열(Array) (0) | 2022.01.24 |
---|---|
javaScript. 객체지향 프로그래밍(OOP) (0) | 2022.01.22 |
javaScript. (8) 숫자와 Math 객체 (1) | 2022.01.22 |
javaScript. 래퍼객체(Wrapper Object) (0) | 2022.01.22 |
javaScript. (7) 문자열 (0) | 2022.01.22 |