getter, setter

uoayop·2021년 3월 5일
0

JavaScript

목록 보기
15/24
post-thumbnail

Javascript

getter

특정 값을 조회하려고 할 때, 특정 코드를 실행시키고 연산된 값을 가져오는 함수다.

const dog = {
  _name: '멍멍이',
  get name() {
    console.log('_name을 조회합니다..');
    return this._name;
};
 
console.log(dog.name);
// 출력 : 멍멍이

함수를 호출할때 dog.name()과 같이 소괄호를 붙이지 않아도 된다.

dog.name 으로만 name을 가져올 수 있다.
name을 Property처럼 사용할 수 있게 됐다.


setter

getter와 마찬가지로 특정 값을 조회해서, 값을 바꿔주려고 할 때 쓰는 함수다.


const dog = {
  _name: '멍멍이',
  set name(value) {
    console.log(this._name+'에서 '+value+'로 이름이 바뀝니다...!' );
    this._name = value;
  }
};

dog.name = '웅이';
//출력 : 멍멍이에서 웅이로 이름이 바뀝니다...! 

getter와 setter를 쓰는 이유

만약 이름을 얻을 때, 이름의 끝에 느낌표를 붙이는 메소드를 추가해주었다고 해보자.

const dog = {
  _name: '멍멍이',
  get name() {
    console.log('_name을 조회합니다..');
    return this._name+'!';
  },
 };

이름을 얻을 때, 사용자는 단순히 느낌표가 붙은 이름을 얻고,
이름의 끝에 느낌표가 붙는 과정을 알지 못한다.

즉, 사용자는 이름만 얻고, 얻는 과정에 있는 내부적인 일은 신경쓰지 않는다.

이러한 원리가 캡슐화의 이점인 정보 은닉이 된다.

게다가 변수에 직접 접근하는 일은 위험하다.

누구나 접근하여 변수의 값을 직접 변경하기보다는 getter와 setter를 통해 변경하는 것이 변수를 보호할 수 있는 방법이다.

(출처: 마이구미님의 [getter setter in ES6] 글을 보고 작성했습니다. )

profile
slow and steady wins the race 🐢

0개의 댓글