객체의 property(속성)는 두 종류로 나뉜다.
첫번째는 data property이다.
두번째는 accessor property(접근자 속성)이다.
접근자 속성의 본질은 함수인데, 값을 획득(get)하고 설정(set)라는 역할을 담당한다.
하지만 외부 스코프에서는 함수가 아닌 일반적인 속성처럼 보인다.
let person = {
name: 'Tason',
secondName: 'Kim',
get fullName() {
console.log(성함: `${name} ${kim}`);
},
set fullName(value) {
[this.name, this.secondName] = value.split(' ');
}
person.fullName = 'Erik Lee';
console.log(person.name); // Erik 출력됨
console.log(person.secondName); Lee 출력됨
getter 메서드는 해당 속성을 읽을 때 동작한다.
setter 메서드는 인수가 하나인 함수이고, 속성에 값을 쓸 때 호출된다.
getter와 setter 메서드를 구현하면 객체에는 fullName
이라는 가상 속성이 생긴다.
그리고 가상 속성을 읽고 쓸 수는 있지만 실제로는 존재하지 않는다.