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

JavaScript에서 객체 변수 변경을 허용하지 않는 방법

JavaScript에서 객체에 새로운 속성을 추가하거나 기존 속성 값을 변경하는 것을 막고 싶다면 freeze() 메서드를 활용할 수 있습니다.

Object.freeze()는 객체를 '동결(freeze)' 상태로 만들어 주는 내장 메서드입니다. 한 번 동결된 객체에는 다음과 같은 제약이 적용됩니다.

  • 새로운 속성을 추가할 수 없습니다.
  • 기존 속성을 삭제할 수 없습니다.
  • 기존 속성의 값을 변경할 수 없습니다.

예제 코드

아래 코드에서는 Object.freeze()를 사용한 후 value1의 값을 100으로 변경하려고 시도합니다. 하지만 객체가 이미 동결되어 있기 때문에 이전 값인 10이 그대로 유지되는 것을 확인할 수 있습니다.

const canNotChangeTheFieldValueAfterFreeze = {value1 : 10, value2: 20};
Object.freeze(canNotChangeTheFieldValueAfterFreeze);
canNotChangeTheFieldValueAfterFreeze.value1 = 100;
console.log("After changing the field value1 from 10 to 100 = " + canNotChangeTheFieldValueAfterFreeze.value1);

프로그램 실행 방법

위 프로그램을 실행하려면 터미널에서 다음 명령어를 입력하세요.

node fileName.js

실행 결과

여기서는 파일 이름이 demo97.js라고 가정하겠습니다. 프로그램을 실행하면 아래와 같은 출력 결과를 확인할 수 있습니다.

PS C:\Users\Amit\JavaScript-code> node demo97.js
After changing the field value1 from 10 to 100 = 10

출력 결과에서 볼 수 있듯이, 값을 100으로 변경하려고 시도했음에도 실제 출력된 값은 여전히 10입니다. 이는 Object.freeze()가 객체의 속성 변경을 완전히 차단했기 때문입니다.

참고 사항

엄격 모드(strict mode)에서는 동결된 객체의 속성을 변경하려고 할 때 오류(TypeError)가 발생합니다. 반면 일반 모드에서는 오류 없이 조용히 무시됩니다. 또한 Object.isFrozen() 메서드를 사용하면 특정 객체가 동결 상태인지 확인할 수 있습니다.