Menu
Coddy logo textTech

get 및 set 키워드

Coddy JavaScript 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 56개 중 43번째.

게터(Getters)와 세터(setters)는 속성처럼 보이지만 실제로는 함수인 특별한 메서드입니다. 이는 속성에 접근하고 수정하는 방식을 제어할 수 있게 해줍니다.

간단한 Person 클래스를 만들어 봅시다:

class Person {
  constructor(firstName, lastName) {
    this._firstName = firstName;
    this._lastName = lastName;
  }
  
  // fullName을 위한 Getter
  get fullName() {
    return `${this._firstName} ${this._lastName}`;
  }
  
  // fullName을 위한 Setter
  set fullName(value) {
    const parts = value.split(' ');
    this._firstName = parts[0];
    this._lastName = parts[1];
  }
}

이제 이러한 게터(getters)와 세터(setters)를 속성처럼 사용할 수 있습니다:

// 새로운 Person 생성
const person = new Person('John', 'Doe');

// getter 사용
console.log(person.fullName); // 출력: John Doe

// setter 사용
person.fullName = 'Jane Smith';

// setter가 내부 속성을 업데이트했습니다
console.log(person.fullName); // 출력: Jane Smith

이 메서드들을 괄호와 함께 호출하지 않는다는 점에 유의하세요. 이들은 속성처럼 동작하지만, 액세스하거나 수정할 때 코드를 실행합니다.

challenge icon

챌린지

age 속성을 가진 User 클래스가 주어집니다. 여러분의 작업은 다음을 수행하는 age에 대한 getter와 setter를 추가하는 것입니다:

  1. Getter <strong>get age()</strong>: 저장된 나이를 반환합니다.
  2. Setter <strong>set age(newAge)</strong>: 나이가 0에서 120 사이인지 유효성을 검사합니다.
    • 유효한 경우 (0-120): this._age에 저장합니다.
    • 유효하지 않은 경우: 값을 변경하지 않고 "Invalid age!"를 출력합니다.

치트 시트

Getter와 Setter는 속성처럼 보이지만 액세스하거나 수정할 때 코드를 실행하는 특수한 메서드입니다.

Getter - 값을 반환하는 메서드를 정의하려면 get 키워드를 사용하세요:

class Person {
  constructor(firstName, lastName) {
    this._firstName = firstName;
    this._lastName = lastName;
  }
  
  get fullName() {
    return `${this._firstName} ${this._lastName}`;
  }
}

Setter - 값을 받아들이는 메서드를 정의하려면 set 키워드를 사용하세요:

class Person {
  set fullName(value) {
    const parts = value.split(' ');
    this._firstName = parts[0];
    this._lastName = parts[1];
  }
}

사용법 - 속성처럼 Getter와 Setter에 액세스합니다 (괄호 없이):

const person = new Person('John', 'Doe');

// Getter 사용
console.log(person.fullName); // John Doe

// Setter 사용
person.fullName = 'Jane Smith';
console.log(person.fullName); // Jane Smith

직접 해보기

import { User } from './user.js';

// 테스트 코드 - 수정하지 마세요
const user = new User("Alice", 25);
console.log(user.age);      // 25가 출력되어야 함

user.age = 30;
console.log(user.age);      // 30이 출력되어야 함

user.age = 150;             // "Invalid age!"가 표시되어야 함
console.log(user.age);      // 여전히 30이 출력되어야 함 (변경되지 않음)

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨