[자바스크립트] 클래스

Kate·2023년 4월 3일
0

자바스크립트

목록 보기
19/19
post-thumbnail

클래스 정의

  • class 키워드를 사용
  • 클래스 이름은 파스칼 케이스 사용
  • 클래스 몸체에서 정의할 수 있는 메서드는 생성자, 프로토타입 메서드, 정적 메서드
// 클래스 선언문 
class Person {}

// 익명 클래스
class Person = class {};

// 기명 클래스
class Person = class MyClass {};

일급 객체로의 특징

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

클래스 호이스팅

인스턴스 생성

클래스는 생성자 함수임 new 연산자와 함께 호출되어 인스턴스를 생성함

메서드

  • 클래스 몸체에서 0개 이상의 메서드 선언 가능
  • 정의할 수 있는 메서드는 constructor 생성자, 프로토타입 메서드, 정적 메서드가 있음

    클래스에서 정의한 메서드의 특징
    1. function 키워드를 생략한 메서드 축약 표현 사용
    2. 객체 리터럴과는 다르게 클래스에 메서드를 정의할 때는 콤마가 필요 없음
    3. 암묵적으로 strict mode로 실행됨
    4. for.. in 문 또는 Object.keys 메서드 등으로 열거 할 수 없음
    5. 내부 메서드 [[Construct]]를 갖지 않는 non-constructor

클래스의 인스턴스 생성 과정

  1. 인스턴스 생성과 this 바인딩
  2. 인스턴스 초기화
  3. 인스턴스 반환

프로퍼티

  1. 인스턴스 프로퍼티 : constructor 내부에서 정의
  2. 접근자 프로퍼티 : 접근자 함수로 구성
  3. 클래스 필드 정의 제안
  4. private 필드 정의 제안
  5. static 필드 정의 제안

상속에 의한 클래스 확장

  • 클래스 상속과 생성자 함수 상속 : 기존 클래스를 상속받아 새로운 클래스를 확장하여 정의
  • extends 키워드 : 상속을 통해 클래스를 확장하려면 extends 키워드를 사용하여 상속받을 클래스를 정의
  • 동적 상속
  • 서브클래스의 constructor : 클래스에서 constructor를 생략하면 클래스에 비어있는 constructor가 암묵적으로 정의됨
  • super 키워드 : 함수처럼 호출 할 수도 있고 this와 같이 식별자처럼 참조할 수 있는 키워드
    - super를 호출하면 수퍼클래스의 constructor를 호출한다
profile
개발 공부하는 케이트입니다.

0개의 댓글