모던 리액트 Deep Dive - 클래스

2025. 9. 15. 21:55·Study/모던 리액트 Deep Dive

⚡리액트 개발을 위해 꼭 알아야할 자바스크립트 - 1.3 클래스 

1.3.1 클래스란 무엇인가?

💡자바스크립트의 클래스란

  • 특정한 형태의 객체를 반복적으로 만들기 위해 사용되는 것
// 클래스 예제
// Car 클래스 선언
class Car {
  // constructor는 생성자. 최초에 생성할 때 어떤 인수를 받을지 결정할 수 있으며,
  // 객체를 초기화하는 용도로도 사용
  constructor(name) {
    this.name = name
  }

  // 메서드
  honk() {
    console.log(`${this.name}이 경적을 울립니다!`)
  }

  // 정적 메서드
  static hello() {
    console.log('저는 자동차입니다.')
  }

  // setter
  set age(value) {
    this.carAge = value
  }

  // getter
  get age() {
    return this.carAge
  }
}

// Car 클래스를 활용해 car 객체를 만듦
const myCar = new Car('자동차')

// 메서드 호출
myCar.honk()

// 정적 메서드는 클래스에서 직접 호출
Car.hello()

// 정적 메서드는 클래스로 만든 객체에서는 호출 불가능
// Uncaught TypeError: myCar.hello is not a function
myCar.hello()

// setter를 만들면 값 할당 가능
myCar.age = 32

// getter로 값 가져오기 가능
console.log(myCar.age, myCar.name) // 32 자동차

1. Constructor (생성자)

  • 객체를 생성하는데 사용하는 메서드
  • 단 하나만 존재할 수 있으며, 여러 개를 사용한다면 에러가 발생한다
  • 생성자에서 수행할 작업이 없다면 생략하는 것도 가능하다.

2. Property (프로퍼티)

  • 클래스로 인스턴스를 생성할 때 내부에 정의할 수 있는 속성값을 의미
class Car {
  constructor(name) {
    // 값을 받으면 내부에 프로퍼티로 할당됨
    this.name = name
  }
}

const myCar = new Car('자동차') // 프로퍼티 값을 넘겨줌

3. getter와 setter

  • getter : 클래스에서 값을 가져올때 사용
  • setter : 클래스에 값을 할당할때 사용

4. 인스턴스 메서드

  • 클래스 내부에서 선언한 메서드
  • 자바스크립트에서는 propotype에 선언되므로 프로토타입 메서드라고도 불림
  • Object.getPrototypeOf를 사용하면, 인수로 넘겨준 변수의 prototype을 확인할 수 있음
class Car {
  constructor(name) {
    this.name = name
  }

  // 인스턴스 메서드 정의
  hello() {
    console.log(`안녕하세요, ${this.name}입니다.`)
  }
}

const myCar = new Car('자동차')

myCar.hello() // 안녕하세요, 자동차입니다.

Object.getPrototypeOf(myCar) // {constructor: f, hello: f}

5. 정적 메서드

  • 클래스의 인스턴스가 아닌 이름으로 호출할 수 있는 메서드
  • this에 접근할수 없지만, 인스턴스를 생성하지 않아도 사용할수 있음(재사용 가능)
class Car {
  static hello() {
    console.log('안녕하세요!')
  }
}

const myCar = new Car()

myCar.hello() // TypeError: myCar.hello is not a function
Car.hello() // 안녕하세요!

6. extends (상속)

  • 기존 클래스를 상속받아서 자식 클래스에서 상속받은 클래스를 기반으로 확장하는 개념
  • 기존 클래스를 기반으로 다양하게 파생클래스를 만들 수 있음
class Car {
  constructor(name) {
    this.name = name
  }

  honk() {
    console.log(`${this.name} 경적을 울립니다!`)
  }
}

class Truck extends Car {
  constructor(name) {
    // 부모 클래스의 constructor, 즉 Car의 constructor를 호출
    super(name)
  }

  load() {
    console.log('짐을 싣습니다')
  }
}

const myCar = new Car('자동차')
myCar.honk() // 자동차 경적을 울립니다!

const truck = new Truck('트럭')
truck.honk() // 트럭 경적을 울립니다!
truck.load() // 짐을 싣습니다!

'Study > 모던 리액트 Deep Dive' 카테고리의 다른 글

모던 리액트 Deep Dive - 이벤트 루프와 비동기 통신의 이해  (0) 2025.09.23
모던 리액트 Deep Dive - 클로저  (1) 2025.09.15
모던 리액트 Deep Dive - 함수  (0) 2025.09.15
모던 리액트 Deep Dive - 자바스크립트의 동등 비교  (0) 2025.09.15
모던 리액트 Deep Dive - 들어가기 전  (0) 2025.09.15
'Study/모던 리액트 Deep Dive' 카테고리의 다른 글
  • 모던 리액트 Deep Dive - 이벤트 루프와 비동기 통신의 이해
  • 모던 리액트 Deep Dive - 클로저
  • 모던 리액트 Deep Dive - 함수
  • 모던 리액트 Deep Dive - 자바스크립트의 동등 비교
happy_dev
happy_dev
복사하고 붙여넣기 잘하고 싶어요
  • happy_dev
    happy의 개발일지
    happy_dev
  • 전체
    오늘
    어제
    • 전체 (43)
      • Java (0)
      • React (1)
      • DB (1)
      • Study (41)
        • 친절한 SQL 튜닝 (9)
        • 모던 리액트 Deep Dive (18)
        • 젠킨스로 배우는 CI,CD 파이프라인 구축 (14)
        • Studyd (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    젠킨스
    SQL
    리액트
    oracle
    toad
    Jenkins
    조인
    DB
    인덱스의기본
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
happy_dev
모던 리액트 Deep Dive - 클래스
상단으로

티스토리툴바