Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 객체를 고정하는 방법: Object.freeze() 활용 가이드

실시간 환경의 자바스크립트(JavaScript)는 다른 프로그래밍 언어에서 흔히 볼 수 있는 전통적인 클래스(class) 개념을 갖고 있지 않습니다. 대신 객체(Object)생성자(Constructor)를 기반으로 동작하며, 그중 Object.freeze()는 객체를 고정하는 데 사용되는 대표적인 생성자 메서드입니다.

Object.freeze()란 무엇인가?

객체를 고정(freeze)하면 해당 객체에 새로운 속성(property)을 추가할 수 없으며, 기존 속성의 값 변경이나 삭제도 불가능해집니다.

또한 Object.freeze()는 객체의 열거 가능성(enumarability), 설정 가능성(configurability), 쓰기 가능성(writability) 그리고 프로토타입(prototype)을 항상 그대로 유지합니다. 주의할 점은 이 메서드가 고정된 복사본(frozen copy)을 새로 만들어 반환하는 것이 아니라, 원본 객체 자체를 직접 고정한다는 것입니다.

Object.freeze()의 주요 용도

  • 객체뿐만 아니라 배열(Array)도 고정할 수 있습니다.
  • 객체를 불변(immutable) 상태로 만들어 외부에서의 무분별한 수정을 방지할 수 있습니다.

문법(Syntax)

Object.freeze(obj)

예제 코드

<html>
<body>
<script>
// 객체를 생성하고 값을 할당합니다.
var myObj1 = {
    prop1: 'freezed values can not be changed'
};

// 생성된 객체를 고정(freeze)합니다.
var myObj2 = Object.freeze(myObj1);

// 고정된 객체의 속성을 변경 시도합니다.
myObj2.prop1 = 'change the freezed value';

// 고정된 객체의 속성을 화면에 출력합니다.
document.write(myObj2.prop1);

</script>
</body>
</html>

실행 결과(Output)

freezed values can not be changed

위 예제에서 확인할 수 있듯이, 고정된 객체의 속성 값을 변경하려고 시도했지만 실제 출력 결과는 원래 값 그대로 유지됩니다. 이는 Object.freeze()가 적용된 객체는 코드 실행 중이라도 속성 변경이 허용되지 않기 때문입니다. 엄격 모드(strict mode)에서는 속성 변경 시도 시 오류(TypeError)가 발생하므로, 데이터 무결성을 보장해야 하는 상수성 데이터나 설정 객체를 다룰 때 매우 유용하게 활용할 수 있습니다.