모던 자바스크립트 딥다이브 스터디 #5-2 (CH 25 클래스)

25장 클래스

ES6에서 클래스 문법을 지원하지만 사실 JS에서 클래스라고 하는건 함수이다.

단 클래스와 생성자 함수는 동일하게 동작하지 않는다.

클래스와 생성자 함수의 차이

  1. 클래스는 new연산자 없이 호출할 수 없다.
  2. 클래스는 상속을 지원하는 extends와 super키워드를 제공한다.
  3. 클래스는 호이스팅이 발생하지 않는 것 처럼 동작한다.
  4. 클래스 내의 모든 코드에는 암묵적으로 strict mode가 실행된다.
  5. 클래스의 constructor, 프로토타입 메서드, 정적 메서드는 모두 열거할 수 없다.

클래스 정의

클래스가 함수라는건, 클래스도 일급 객체라는 것임.

즉 JS에서 클래스는 다음의 특징을 갖는다.

  1. 무명의 리터럴로 런타임간 생성 가능
  2. 변수나 자료구조에 저장 가능
  3. 함수 매개변수 전달 가능
  4. 함수 반환값으로 사용 가능