[Javascript] 클래스(Class) 란?

배석재·2021년 8월 2일
0

Study

목록 보기
10/14
post-thumbnail

안녕하세요.
지난 포스팅에 이어서 모던 자바스크립트 Deep Dive 책을 바탕으로 스터디를 진행하면서 정리한 내용을 기술해보려합니다!


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

클래스를 프로토타입 기반 객체 생성 패턴의 단순한 문법적 설탕이라고 보기보다는 새로운 객체 생성 매커니즘으로 보는 것이 좀 더 합당하다.

1-2. 클래스 정의

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

1-3. 클래스 호이스팅

1-4. 인스턴스 생성

1-5. 메서드

  • constructor(생성자)
  • 프로토타입 메서드
  • 정적 메소드

1-5-1. constructor

1-5-2. 프로토타입 메서드

1-5-3. 정적 메서드

1-5-4. 정적 메서드와 프로토타입 메서드의 차이

  1. 정적 메서드와 프로토타입 메서드는 자신이 속해 있는 프로토타입 체인이 다르다.
  2. 정적 메서드는 클래스를 호출하고 프로토타입 메서드는 인스턴스로 호출한다.
  3. 정적 메서드는 인스턴스 프로퍼티를 참조할 수 없지만 프로토타입 메서드는 인스턴스 프로퍼티를 참조할 수 있다.

1-5-5. 클래스에서 정의한 메서드의 특징

  1. function 키워드를 생략한 메서드 축약 표현을 사용한다.
  2. 객체 리터럴과는 다르게 클래스에 메서드를 정의할 때는 콤마가 필요 없다.
  3. 암묵적으로 strict mode로 실행된다.
  4. for ... in 문이나 Objecct.keys 메서드 등으로 열거할 수 없다. 즉, 프로퍼티의 열거 가능 여부를 나타내며, 불리언 값을 갖는 프로퍼티 어트리뷰트의 값이 false다.
  5. 내부 메서드는 [[Construct]]를 갖지 않는 non-constructor다. 따라서 new 연산자와 함께 호출할 수 없다.

1-6. 클래스의 인스턴스 생성 과정

인스턴스 생성과 this 바인딩 -> 인스턴스 초기화 -> 인스턴스 반환

1-7. 프로퍼티

1-7-1. 인스턴스 프로퍼티

1-7-2. 접근자 프로퍼티

1-7-3. 클래스 필드 정의 제안

1-7-4. private 필드 정의 제안

1-7-5. static 필드 정의 제안


이상으로 클래스에 대한 포스팅을 마치도록 하겠습니다~!!

profile
"personality begins Where Comparison ends"

0개의 댓글