자바스크립트 클래스 getter와 setter 메서드

자바스크립트는 객체 지향 프로그래밍 언어로서 클래스를 사용하여 객체를 생성하고 속성과 메서드를 정의할 수 있습니다. 클래스에는 객체의 상태를 가져오거나 설정하는 데 사용되는 Getter와 Setter 메서드가 있습니다. 이러한 메서드를 사용하면 객체의 데이터를 안전하게 읽고 쓸 수 있으며, 캡슐화와 보안을 갖춘 코드를 작성할 수 있습니다.

Getter 메서드

Getter 메서드는 클래스 내부에 속성의 값을 반환하는 메서드입니다. 이 메서드는 속성 값을 가져오기 전에 어떤 로직을 실행하고, 가져온 값을 반환합니다. Getter 메서드는 다음과 같이 작성할 수 있습니다:

class Car {
  constructor(brand, model) {
    this.brand = brand;
    this.model = model;
  }

  get fullName() {
    return `${this.brand} ${this.model}`;
  }
}

const myCar = new Car("Tesla", "Model 3");
console.log(myCar.fullName); // 출력: Tesla Model 3

위의 예시에서 fullName은 Getter 메서드로, brandmodel 속성의 값을 조합하여 하나의 문자열을 반환합니다. Getter 메서드를 호출할 때에는 마치 속성처럼 접근하여 사용할 수 있습니다.

Setter 메서드

Setter 메서드는 클래스 내부에 속성의 값을 설정하는 메서드입니다. 이 메서드는 속성 값을 설정하기 전에 어떤 유효성 검사나 로직을 실행하고, 값을 설정합니다. Setter 메서드는 다음과 같이 작성할 수 있습니다:

class Car {
  constructor(brand, model) {
    this._brand = brand;
    this._model = model;
  }

  get brand() {
    return this._brand;
  }

  get model() {
    return this._model;
  }

  set brand(newBrand) {
    if (newBrand !== "") {
      this._brand = newBrand;
    }
  }

  set model(newModel) {
    if (newModel !== "") {
      this._model = newModel;
    }
  }
}

const myCar = new Car("Tesla", "Model 3");
console.log(myCar.brand); // 출력: Tesla

myCar.brand = "BMW";
console.log(myCar.brand); // 출력: BMW

myCar.brand = "";
console.log(myCar.brand); // 출력: BMW (유효성 검사에 통과하지 못해 변경되지 않음)

위의 예시에서 brandmodel은 Getter와 Setter 메서드가 정의된 속성입니다. Setter 메서드를 호출할 때에는 마치 속성을 할당하듯이 사용할 수 있습니다. Setter 메서드 내부에서는 새로운 값의 유효성을 검사하고, 유효한 값이라면 속성 값을 변경할 수 있습니다.


Getter와 Setter 메서드를 사용하면 자바스크립트 클래스의 속성 값을 안전하게 조작할 수 있습니다. 이를 통해 데이터의 무결성을 보장하고, 외부에서 직접 속성을 조작하지 못하도록 캡슐화를 할 수 있습니다. 자바스크립트에서 클래스를 사용하여 객체를 생성할 때는 Getter와 Setter 메서드의 활용을 고려해보세요.