JavaScript - 문제 미리보기

문제 641

hard
다음 카운터 객체 코드의 실행 결과는?

```javascript
const obj = {counter: 0};

Object.defineProperty(obj, "reset", {
get: function() { this.counter = 0; }
});

Object.defineProperty(obj, "add", {
set: function(value) { this.counter += value; }
});

obj.add = 5; // 1단계
obj.counter++; // 2단계
obj.reset; // 3단계
obj.add = 3; // 4단계

console.log(obj.counter);
```
A. 0
B. 3
C. 6
D. 9

정답: B

단계별로 실행 과정을 분석해보겠습니다:

1) 초기 상태: `counter = 0`
2) 1단계 `obj.add = 5`: setter가 호출되어 `counter += 5` → `counter = 5`
3) 2단계 `obj.counter++`: 직접 증가 → `counter = 6`
4) 3단계 `obj.reset`: getter가 호출되어 `counter = 0`으로 리셋 → `counter = 0`
5) 4단계 `obj.add = 3`: setter가 호출되어 `counter += 3` → `counter = 3`

따라서 최종 결과는 3입니다. 이 예시는 getter와 setter를 활용하여 속성처럼 보이지만 실제로는 함수 호출이 일어나는 방식을 보여줍니다.

💡 학습 팁

이 문제를 포함한 JavaScript 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.