관리 메뉴

Dev Blog

25. 클래스 본문

Tech Books/Javascript_Modern JS Deep dive

25. 클래스

Nomad Kim 2023. 2. 20. 21:15

25.1 클래스는 프로토타입의 문법적 설탕인가?

사실 클래스는 함수이며 기존 프로토타입 기반 패턴을 클래스 기반 패턴처럼 사용할 수 있도록 하는 문법적 설탕_syntactic sugar 이라고 볼 수도 있다. 

클래스는 생성자 함수보다 엄격하며 생성자 함수에서는 제공하지 않는 기능도 제공한다. 

클래스는 생성자 함수 기반의 객체 생성 방식보다 견고하고 명료하다(그렇다고 클래스가 자바스크립트의 다른 객체 생성 방식보다 우월하다고 생각하지는 않는다). 특히 클래스의 extends와 super 키워드는 상속 관계 구현을 더욱 간결하고 명료하게 한다.
새로운 객체 생성 메커니즘으로 보는 것이 좀 더 합당하다.

25.2 클래스 정의

클래스를 표현식으로 정의할 수 있다는 것은 클래스가 값으로 사용할 수 있는 일급 객체라는 것을 의미한다.

일급객체로서 아래와 같은 특징을 갖는다.

  • 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다.  
  • 변수나 자료구조(객체, 배열 등)에 저장할 수 있다.  
  • 함수의 매개변수에게 전달할 수 있다.  
  • 함수의 반환값으로 사용할 수 있다.

좀 더 자세히 말하자면 클래스는 함수다. 따라서 클래스는 값처럼 사용할 수 있는 일급 객체다.

클래스와 생성자 함수의 정의 방식을 비교해 보면 다음과 같다.

25.4 인스턴스 생성

함수는 new 연산자의 사용 여부에 따라 일반 함수로 호출되거나 인스턴스 생성을 위한 생성자 함수로 호출되지만 클래스는 인스턴스를 생성하는 것이 유일한 존재 이유이므로 반드시 new 연산자와 함께 호출해야 한다.

'Tech Books > Javascript_Modern JS Deep dive' 카테고리의 다른 글

27. 배열  (0) 2023.02.21
26. ES6 함수의 추가 기능  (0) 2023.02.20
24. 클로저  (0) 2023.02.20
23. 실행 컨텍스트  (0) 2023.02.19
22. this  (0) 2023.02.19
Comments