프로퍼티는 둘로 나뉜다. (데이터 프로퍼티, 접근자 프로퍼티)
데이터 프로퍼티는 우리가 알고 있는 객체에 값을 저장하고 있는 그 프로퍼티다.
접근자 프로퍼티는 객체 지향 프로그래밍에서 객체가 가진 프로퍼티 값을 객체 바깥에서 읽거나 쓸 수 있도록 제공하는 메서드를 말합니다. 객체의 프로퍼티를 객체 바깥에서 직접 조작하는 행위는 데이터의 유지 보수성을 해치는 주요한 원인이 되기도 한다.
정보은닉
과 객체의 무결성 보장
을 위함 + validation을 하기 위해서: getter는 객체의 특정 프로퍼티 값을 가져오도록 하기 위한 함수이다.
let user = {
name: "John",
surname: "Smith"
};
let user = {
name: "John",
surname: "Smith",
get fullName() {
return `${this.name} ${this.surname}`;
}
};
console.log(user.fullName); // output: John Smith
user.fullName = "Test"; // Error (프로퍼티에 getter 메서드만 있어서 에러가 발생합니다.)
=
을 사용해 값을 변수에 할당하려고 하면 에러가 발생한다.: setter는 객체의 특정 프로퍼티 값을 설정하기 위한 함수이다.
let user = {
name: "John",
surname: "Smith",
set fullName(value) {
[this.name, this.surname] = value.split(" ");
}
};
// 주어진 값을 사용해 set fullName이 실행됩니다.
user.fullName = "Alice Cooper";
alert(user.name); // Alice
alert(user.surname); // Cooper