get 및 set 키워드
Coddy JavaScript 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 56개 중 43번째.
게터(Getters)와 세터(setters)는 속성처럼 보이지만 실제로는 함수인 특별한 메서드입니다. 이는 속성에 접근하고 수정하는 방식을 제어할 수 있게 해줍니다.
간단한 Person 클래스를 만들어 봅시다:
class Person {
constructor(firstName, lastName) {
this._firstName = firstName;
this._lastName = lastName;
}
// fullName을 위한 Getter
get fullName() {
return `${this._firstName} ${this._lastName}`;
}
// fullName을 위한 Setter
set fullName(value) {
const parts = value.split(' ');
this._firstName = parts[0];
this._lastName = parts[1];
}
}이제 이러한 게터(getters)와 세터(setters)를 속성처럼 사용할 수 있습니다:
// 새로운 Person 생성
const person = new Person('John', 'Doe');
// getter 사용
console.log(person.fullName); // 출력: John Doe
// setter 사용
person.fullName = 'Jane Smith';
// setter가 내부 속성을 업데이트했습니다
console.log(person.fullName); // 출력: Jane Smith이 메서드들을 괄호와 함께 호출하지 않는다는 점에 유의하세요. 이들은 속성처럼 동작하지만, 액세스하거나 수정할 때 코드를 실행합니다.
챌린지
age 속성을 가진 User 클래스가 주어집니다. 여러분의 작업은 다음을 수행하는 age에 대한 getter와 setter를 추가하는 것입니다:
- Getter
<strong>get age()</strong>: 저장된 나이를 반환합니다. - Setter
<strong>set age(newAge)</strong>: 나이가 0에서 120 사이인지 유효성을 검사합니다.- 유효한 경우 (0-120):
this._age에 저장합니다. - 유효하지 않은 경우: 값을 변경하지 않고
"Invalid age!"를 출력합니다.
- 유효한 경우 (0-120):
치트 시트
Getter와 Setter는 속성처럼 보이지만 액세스하거나 수정할 때 코드를 실행하는 특수한 메서드입니다.
Getter - 값을 반환하는 메서드를 정의하려면 get 키워드를 사용하세요:
class Person {
constructor(firstName, lastName) {
this._firstName = firstName;
this._lastName = lastName;
}
get fullName() {
return `${this._firstName} ${this._lastName}`;
}
}Setter - 값을 받아들이는 메서드를 정의하려면 set 키워드를 사용하세요:
class Person {
set fullName(value) {
const parts = value.split(' ');
this._firstName = parts[0];
this._lastName = parts[1];
}
}사용법 - 속성처럼 Getter와 Setter에 액세스합니다 (괄호 없이):
const person = new Person('John', 'Doe');
// Getter 사용
console.log(person.fullName); // John Doe
// Setter 사용
person.fullName = 'Jane Smith';
console.log(person.fullName); // Jane Smith직접 해보기
import { User } from './user.js';
// 테스트 코드 - 수정하지 마세요
const user = new User("Alice", 25);
console.log(user.age); // 25가 출력되어야 함
user.age = 30;
console.log(user.age); // 30이 출력되어야 함
user.age = 150; // "Invalid age!"가 표시되어야 함
console.log(user.age); // 여전히 30이 출력되어야 함 (변경되지 않음)
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.