[HOW]JavaScript의 객체 변경 방지 방법

HOW

 ⋅ Dec 5, 2023 ⋅ 1 min read

Prevent object changes
Prevent object changes

객체 변경 방지

객체 변경 가능한 값으로 재할당 없이 프로퍼티의 생성, 변경, 삭제가 가능합니다. 자바스크립트는 객체의 변경을 방지하기 위해 다양한 기능을 제공합니다. 여러 객체 변경 방지 메서드들은 각각 객체의 변경 금지 정도가 다릅니다. 지금부터 각 메서드들에 대해 알아보도록 하겠습니다.

객체 확장 금지

객체의 확장을 금지하는 메서드는 Object.preventExtensions()입니다. 객체 확장 금지는 프로퍼티를 추가하는 것을 방지하는 것입니다. 객체의 프로퍼티는 동적 추가와 Object.defineProperty()로 가능하지만 확장이 금지된 경우에는 두 가지 방법 모두 불가능합니다. 객체의 확장 가능 여부는 Object.isExtensible()로 확인 가능합니다.

객체 밀봉

객체 밀봉이란 프로퍼티 추가 및 삭제, 프로퍼티 어트리뷰트 재정의 금지를 의미합니다. 밀봉된 객체는 읽기와 쓰기만 가능하며 Object.seal()로 객체를 밀봉할 수 있습니다. 객체가 밀봉됐는지 확인은 Object.isSealed()로 가능합니다.

객체 동결

객체 동결은 프로퍼티 추가, 삭제, 프로퍼티 어트리뷰트 재정의 금지, 프로퍼티 값 갱신 금지를 의미하며 동결된 객체는 읽기만 가능합니다. Object.freeze()를 통해 객체를 동결할 수 있습니다. Object.isFrozen()을 통해 객체 동결 여부를 확인할 수 있습니다.

불변 객체

객체 확장 금지, 객체 밀봉, 객체 동결은 얕은 변경 방지로 중첩된 객체는 영향을 끼칠 수 없습니다. 중첩된 객체까지 변경이 불가능한 객체를 만들기 위해서는 객체를 값으로 갖는 프로퍼티까지 재귀적으로 객체 변경 방지 메서드를 호출해야 합니다.


참고

이웅모, ⌈모던 자바스크립트 - Deep Dive⌋, 2020, 16_프로퍼티 어트리뷰트(p.229 - 233)

LINKS

© Copyright 2021

made by React.js & gatsby