JavaScript - 문제 미리보기

문제 652

hard
다음 코드에서 각 단계별로 가능한 작업을 올바르게 설명한 것은 무엇인가요?

```javascript
"use strict";
const data = {name: "JavaScript", version: "ES6"};

// 단계 1: 초기 상태
// 단계 2: Object.preventExtensions(data);
// 단계 3: Object.seal(data);
// 단계 4: Object.freeze(data);
```
A. 단계1: 모든 작업 가능 / 단계2: 수정,삭제 가능 / 단계3: 수정만 가능 / 단계4: 아무것도 불가능
B. 단계1: 추가,수정,삭제 가능 / 단계2: 추가 불가능 / 단계3: 추가,삭제 불가능 / 단계4: 추가,수정,삭제 모두 불가능
C. 단계1: 수정만 가능 / 단계2: 삭제만 가능 / 단계3: 추가만 가능 / 단계4: 모든 작업 가능
D. 단계1: 읽기만 가능 / 단계2: 읽기,쓰기 가능 / 단계3: 읽기,수정 가능 / 단계4: 모든 작업 가능

정답: B

JavaScript의 객체 보호 메서드들은 단계적으로 더 강한 제한을 가합니다:

1. 단계 1 (일반 객체): 속성 추가, 수정, 삭제 모두 가능

2. 단계 2 (preventExtensions):
1) ❌ 속성 추가 불가능
2) ✅ 기존 속성 수정 가능
3) ✅ 기존 속성 삭제 가능

3. 단계 3 (seal):
1) ❌ 속성 추가 불가능 (preventExtensions 포함)
2) ✅ 기존 속성 수정 가능
3) ❌ 기존 속성 삭제 불가능

4. 단계 4 (freeze):
1) ❌ 속성 추가 불가능 (seal 포함)
2) ❌ 기존 속성 수정 불가능
3) ❌ 기존 속성 삭제 불가능

각 메서드는 이전 단계의 제한을 포함하면서 추가적인 제한을 가합니다. `freeze`는 객체를 완전히 불변(immutable)으로 만드는 가장 강력한 보호 수준입니다.

💡 학습 팁

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