자바스크립트는 객체 지향 프로그래밍 언어로서 클래스를 사용하여 객체를 생성하고 속성과 메서드를 정의할 수 있습니다. 클래스에는 객체의 상태를 가져오거나 설정하는 데 사용되는 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 메서드로, brand
과 model
속성의 값을 조합하여 하나의 문자열을 반환합니다. 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 (유효성 검사에 통과하지 못해 변경되지 않음)
위의 예시에서 brand
와 model
은 Getter와 Setter 메서드가 정의된 속성입니다. Setter 메서드를 호출할 때에는 마치 속성을 할당하듯이 사용할 수 있습니다. Setter 메서드 내부에서는 새로운 값의 유효성을 검사하고, 유효한 값이라면 속성 값을 변경할 수 있습니다.
Getter와 Setter 메서드를 사용하면 자바스크립트 클래스의 속성 값을 안전하게 조작할 수 있습니다. 이를 통해 데이터의 무결성을 보장하고, 외부에서 직접 속성을 조작하지 못하도록 캡슐화를 할 수 있습니다. 자바스크립트에서 클래스를 사용하여 객체를 생성할 때는 Getter와 Setter 메서드의 활용을 고려해보세요.