본문 바로가기

자바스크립트 리뷰

getter와 setter 간결하게 사용하기 [혼공자 9-2-10]

getter와 setter를 메서드로 만들어 두면 그 메서드를 사용할 때 좀 불편하다. 속성값에 접근하려는데 함수처럼 생긴 메서드를 입력해야 하니 헷갈릴 수도 있다. 그런 분들을 위한 게 get 키워드, set 키워드 문법이다. 코드를 보자

      class Square {
        #length

        constructor (length) {
          this.length = length
        }

        get length () {
          return this.#length
        }
       
        get perimeter () {
          return this.#length * 4
        }

        get area () {
           return this.#length * this.#length
        }
        set length (length) {
          if (length <= 0) {
            throw '길이는 0보다 커야 합니다.'
          }
          this.#length = length
        }
      }

      // 클래스 사용하기
      const squareA = new Square(10)
      console.log(`한 변의 길이: ${squareA.length}`)
      console.log(`둘레: ${squareA.perimeter}`)
      console.log(`넓이: ${squareA.area}`)

      squareA.length = 15;
      console.log(`한 변의 길이: ${squareA.area}`)


      // 예외 발생시키기
      const squareB = new Square(-10)
  • 한 변의 길이에 접근하는 데에 squareA.length 라고 쓰면 된다. 메서드로 getter를 정의했을 때보다 간결하다. 
  • squareA.length = 15; 로 length 값을 바꿀 수도 있다. length라는 setter를 사용한 것이다.
  • 그리고 여전히 클래스 생성시 파라미터로 -10을 넣으면 throw 에러메시지가 console창에 빨갛게 뜬다. 생성시 입력한 파라미터가 setter로 간 것이다.