[JS] class에서 getter와 setter사용하는 방법❗️

TATA·2023년 1월 16일
0

JavaScript

목록 보기
18/25

✔️ getter, setter 사용법

🧽 getter = 획득자, setter = 설정자

get : 본 필드의 값을 숨긴 채 내부에서 가공된 값을 꺼낼 수 있다.
set : 필드를 private로 만들어 외부의 접근을 제한한 후,
            setter를 사용해 전달받은 값을 내부에서 가공해 필드에 넣어줄 수 있다.

class 원하는클래스명 {
	constructor(파라미터1, 파라미터2){
    	this.속성명1 = 파라미터1;
        this.속성명2 = 파라미터2;
    }
    
    // 사용자가 속성의 값을 꺼낼때 실행
    get 속성명1 {
    	return this.속성명1 * 2;
    }
    
    // 사용자가 속성에 값을 저장할때 실행
    set 속성명1 (value){
    	if(value > 0)
    	    this._속성명1 = value;
    }
}

🧽 언더바 _

get과 set에서 this.age가 아닌 this._age로 한 이유?
_는 private하다 또는 내부적인 속성이다라는 뜻으로 쓰인다.
이렇게 만든 프로퍼티는 외부에서 접근이 가능하지만,
외부에서는 사용하지 않는다.

❓ 만약 get과 set에서 this._age가 아닌 this.age를 쓴다면?
👉 getter와 setter가 무한반복하게 된다.

아래는 get과 set 코드 예시이다.

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  get age() {
    return this._age; // _는 private하다 또는 내부적인 속성이다라는 뜻이다.
  }
  set age(value) {
    if (value < 0) {
      console.error("나이가 음수입니다.");
      // 예외 처리는 따로 하지 않았기에,
      // 음수값이어도 콘솔창에서만 에러표시가 뜨고 메소드가 실행된다.
    }
    this._age = value;
  }

  introduce() {
    return "제 이름은 " + this.name + "이고, 나이는 " + this.age + " 입니다.";
  }
}

const tata = new Person("tata", 29);
console.log(tata.introduce()); // 제 이름은 tata이고, 나이는 29 입니다.

이렇게 get과 set을 이용하면 객체의 무결성을 보장할 수 있다.
❗️참고) 무결성이란 데이터의 정확성과 일관성을 유지하고 보증하는 것을 말한다.

👉 클래스와 인스턴트 정리된 글 보러가기

profile
🐾

0개의 댓글