TIR: 완벽가이드 1-2. 코어자바스크립트 (9) 클래스와 모듈 - 220717

Lumpen·2022년 7월 17일
0

TIR

목록 보기
21/40

클래스와 모듈

객체끼리 특정 프로퍼티를 공유할 수 있도록 클래스를 정의하는 것은 종종 유용하다
클래스의 구성원인 인스턴스는 상태를 정의하거나 저장하는 프로퍼티를 가지고 있고,
그들의 동작을 정의하는 메소드를 가지고 있기도 하다
메소드는 클래스 수준에서 정의되고 모든 인스턴스가 공유한다

자바스크립트에서의 클래스는 프로토타입 기반의 상속 매커니즘을 기반으로 하고있다
두 객체가 같은 프로토타입 객체로부터 프로퍼티를 상속 받았다면 둘은 같은 클래스의 인스턴스다
구문상으로 비슷하고 전통적인 클래스의 기능을 모방할 수 있지만,
자바스크립트의 클래스와 프로토타입 기반 상속 매커니즘은 자바의 클래스 상속과는 상당히 다르다
-> ES6 부터 class 키워드를 지원함

프로토타입 기반 프로그래밍은 클래스가 필요없는(class-free) 객체지향 프로그래밍 스타일로 프로토타입 체인과 클로저 등으로 객체 지향 언어의 상속, 캡슐화(정보 은닉) 등의 개념을 구현할 수 있다.

Javascript Object-Oriented Programming
ES5에서는 생성자 함수와 프로토타입, 클로저를 사용하여 객체 지향 프로그래밍을 구현하였다.

자바스크립트 클래스의 특징은 동적으로 확장될 수 있다는 점

하지만 클래스 기반 언어에 익숙한 프로그래머들은 프로토타입 기반 프로그래밍 방식이 혼란스러울 수 있으며 자바스크립트를 어렵게 느끼게하는 하나의 장벽처럼 인식되었다.

ES6의 클래스는 기존 프로토타입 기반 객체지향 프로그래밍보다 클래스 기반 언어에 익숙한 프로그래머가
보다 빠르게 학습할 수 있는 단순명료한 새로운 문법을 제시하고 있다.
그렇다고 ES6의 클래스가 기존의 프로토타입 기반 객체지향 모델을 폐지하고 새로운 객체지향 모델을 제공하는 것은 아니다.
사실 클래스도 함수이며 기존 프로토타입 기반 패턴의 문법적 설탕(Syntactic sugar)이라고 볼 수 있다.
다만, 클래스와 생성자 함수가 정확히 동일하게 동작하지는 않는다. 클래스가 보다 엄격하다.
따라서 클래스를 프로토타입 기반 패턴의 문법적 설탕이라고 인정하지 않는 견해도 일리가 있다.

profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글