[JavaScript] 접근자 프로퍼티 (Getter / Setter)
글 작성자: bbangson
반응형
Getter / Setter
접근자 프로퍼티
접근자란 객체 지향 프로그래밍에서 객체가 가진 프로퍼티 값을 바깥에서 읽거나 쓸 수 있도록 제공하는 메서드를 말합니다. 객체의 프로퍼티를 객체 바깥에서 직접 조작하는 행위는 데이터의 유지 보수성을 해치는 주요한 원인입니다.
접근자 프로퍼티의 본질은 함수인데, 이 함수는 값을 획득(Get)하고 설정(Set) 하는 역할을 합니다. 접근자 프로퍼티는 'getter(획득자)'와 ‘setter(설정자)’ 메서드로 표현됩니다. 객체 리터럴 안에서 getter와 setter 메서드는 get과 set으로 나타낼 수 있습니다.
Getter : 인수가 없는 함수로, 특정 값을 조회하고자 할 때 사용합니다.
Setter : 인수가 하나인 함수로, 특정 값을 설정하고자 할 때 사용합니다.
const numbers = {
// (1) 명칭 중복 방지를 위해 _사용.
_a: 1,
_b: 2,
sum: 3,
calculate() {
console.log("calculate 실행");
this.sum = this._a + this._b;
},
get a() {
return this._a;
},
get b() {
return this._b;
},
set a(value) {
this._a = value;
// (2) 값을 설정할 때마다 sum을 최신화 해주기 위해 calculate() 실행.
this.calculate();
},
set b(value) {
this._b = value;
this.calculate();
},
};
console.log(numbers.sum); // 3 출력
// 주어진 값을 사용해 set a가 실행.
numbers.a = 5; // 'calculate 실행' 출력
numbers.a = 7; // 'calculate 실행' 출력
numbers.a = 9; // 'calculate 실행' 출력
console.log(numbers.sum); // 16 출력
// (3) sum 조회할 때마다 계산하는 것이 아닌, 값이 수정될 때 계산하기 때문에 더 효율적이라 할 수 있다.(재사용)
// 즉, 값이 수정될 때 계산된 값을 sum에 저장하고 이 값을 재사용하는 것이다.
(1) 변수 명칭에 대한 중복 방지를 위해 _를 사용했습니다.
(2) 값을 Setter 함수를 이용해 수정하면 변수 sum의 값을 최신화합니다.
(3) sum을 조회할 때마다 계산하는 것이 아닌, Setter함수를 호출 할 때 Calculate() 함수를 호출하여 계산하므로
sum을 조회할 때는 이미 계산된 값을 재사용합니다.
반응형
'공부 || 정리 > JavaScript' 카테고리의 다른 글
[JavaScript] for of / in (0) | 2021.07.07 |
---|---|
[JavaScript] 배열(Array) , 대표적인 Array 내장함수 (0) | 2021.07.06 |
[JavaScript] 실습 - 카운터 만들기 / 모달 만들기 (0) | 2021.03.21 |
[JavaScript] 비동기 처리의 이해 - promise, async / await, promise.all, promise.race (0) | 2021.03.15 |
[JavaScript] scope, hoisting (0) | 2021.03.09 |
댓글
이 글 공유하기
다른 글
-
[JavaScript] for of / in
[JavaScript] for of / in
2021.07.07 -
[JavaScript] 배열(Array) , 대표적인 Array 내장함수
[JavaScript] 배열(Array) , 대표적인 Array 내장함수
2021.07.06 -
[JavaScript] 실습 - 카운터 만들기 / 모달 만들기
[JavaScript] 실습 - 카운터 만들기 / 모달 만들기
2021.03.21 -
[JavaScript] 비동기 처리의 이해 - promise, async / await, promise.all, promise.race
[JavaScript] 비동기 처리의 이해 - promise, async / await, promise.all, promise.race
2021.03.15