Getter
1. 데이터를 가공해서 새로운 데이터를 반환할때
2. private한 값을 반환할때
Setter
1. 값을 설정해줄때
- 물론 Setter 없어도 바꿀 수는 있지만 프로퍼티를 private으로 바꿨을때는 Setter없이 바꿀 수 없다.
- private은 직접 액세스가 불가
2. Setter는 정의한 값을 변경하는 것이기 때문에 많이 선호하지는 않음
class Person {
name;
year;
constructor(name, year) {
this.name = name;
this.year = year;
}
// Getter, Setter
get getNameAndYear() {
return `${this.name}-${this.year}`;
}
// 바꾸고 싶은 프로퍼티의 이름과 겹치게 많이 설정한다.
// setter는 무조건 1개의 파라미터를 받게 되어 있다.
set setName(name) {
this.name = name;
}
sayName() {
return `안녕하세요 저는 ${this.name}입니다.`
}
}
// 클래스 사용
const soo = new Person('최수영', 1997);
console.log(soo); // Person { name: '최수영', year: 1997 }
// Getter 사용
console.log(soo.getNameAndYear); // 최수영-1997
// Setter 사용
soo.setName = '수영';
console.log(soo); // Person { name: '수영', year: 1997 }
Getter, Setter with private 😎
class Person2 {
#name;
year;
constructor(name, year) {
this.#name = name;
this.year = year;
}
get name() {
return this.#name;
}
set name(name) {
this.#name = name;
}
}
const sooyoung = new Person2('sooyoung', 1997);
console.log(sooyoung); // Person2 { year: 1997 }
// Getter 사용하면 private에 접근할 수 있다.
console.log(sooyoung.name); // sooyoung
// Setter 사용도 마찬가지로 접근 가능
sooyoung.name = '최수영';
console.log(sooyoung.name); // 최수영