만약 우리가 person이라는 class를 만든다고 가정해보자. Person에는 이름, 나이 템플릿이 존재한다. 이제 사용자가 class로 object를 만드는데 실수로 나이에 -1이라는 수를 넣었다. 근데 나이는 -1이 될 수 없기 때문에 우리는 방어적으로 이 실수를 만회 시켜주어야한다. 이때 get, set를 사용하는 것이다.
'use strict'
class User{
constructor(firstName, lastName, age){
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
get age() {
return this._age;
}
set age(value) {
this._age = value < 0 ? 0 : value;
}
}
const user1 = new User('Steve', 'job', -1);
console.log(user1.age);
위의 코드를 설명하면, constructor 안에 있는 this.age는 get age()를 실행시키고 = age는 set age(value)를 실행시킨다.
get은 값을 return하고 set은 값을 설정하는 역할을 한다. set은 값을 설정하기 때문에 인자인 value를 넣어줘야하는 것이다.
근데 get, set에는 왜 age 언더바를 붙인 것일까?
그 이유는 만약 언더바 안붙이고 age라고만 해서 코드를 작성한다면 set 안에 있는 this.age가 끝나면서 set을 부르고 이게 반복되면서 갇히게 되어버린다. 그래서 언더바를 붙인 것이다. 언더바가 아닌 다른 이름으로 설정해도 된다.