자바스크립트 Getters & Setters 활용 가이드: 데이터 검증 및 캡슐화 (53 characters
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

자바스크립트 Getters & Setters 활용 가이드

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

자바스크립트 개발자, OOP 개념 익히는 초보자, 클래스 보안이 필요한 프로젝트 개발자

핵심 요약

  • Getters & Setters클래스의 프로퍼티 접근을 제어하는 핵심 메커니즘
  • Setters데이터 검증 및 정제를 위해 사용되며, 예: this.#diffOnThrottle = value
  • Getters포맷팅/연산된 값 반환 가능, 예: return ${this.#diffOnThrottle}%`
  • 캡슐화를 통해 내부 상태 보호 및 예측 가능한 객체 설계 가능

섹션별 세부 요약

1. Getters & Setters의 핵심 목적

  • 데이터 보호를 위해 클래스의 프로퍼티 접근 제어
  • this 키워드와 함께 사용하여 유효성 검증 가능
  • 예: if (typeof value !== 'number' || value < 0 || value > 100) { throw new Error(...) }

2. F1Car 클래스 예제에서의 Setters 활용

  • 프라이빗 필드(#diffOnThrottle) 사용으로 외부 직접 접근 방지
  • set diffOnThrottle(value)값 검증에러 발생 처리
  • 잘못된 입력 시 Uncaught Error: Differential on throttle must be a number between 0 and 100. 발생

3. Getters를 통한 데이터 포맷팅

  • get diffOnThrottle()으로 수치 포맷팅 가능, 예: return ${this.#diffOnThrottle}%`
  • 사용자에게 투명한 정보 제공 (예: "70%")
  • Getter 미설정 시 console.log(this.diffOnThrottle)undefined

4. plain object에서의 Object.defineProperty 활용

  • 클래스 대신 Object.defineProperty()프로퍼티 정의 가능
  • 예:
  • Object.defineProperty(sauber, 'fuel', {
      get() { return `${this._fuel} liters` },
      set(value) { ... }
    })
  • sauber.fuel = "full"Error: Fuel must be a number between 0 and 110 liters.

5. Getter를 통한 연산된 데이터 제공

  • 연료 소모량 기반 남은 랩 계산 예:
  • get remainingLaps() {
      return Math.floor(this.#fuel / this.#consumptionPerLap)
    }
  • ferrari.remainingLaps30 (75L / 2.5L per lap)

6. 결론: 캡슐화의 중요성 강조

  • 내부 상태 보호 → 보안, 예측 가능성, 유지보수성 향상
  • F1 엔지니어처럼 필요 없는 설정은 제한해야 함
  • "banana"와 같은 잘못된 입력을 자동으로 차단 가능

결론

  • Getters & Setters는 데이터 검증, 포맷팅, 캡슐화를 위해 필수적인 패턴
  • class 또는 Object.defineProperty()로 구현 가능
  • 프로퍼티 검증(set)과 연산된 값 제공(get)을 결합하여 안전하고 유연한 객체 설계 가능
  • 실무에서 # 프라이빗 필드와 함께 사용해 내부 로직 보호 권장