카테고리 없음
Object.freeze() vs const
_뮨
2021. 8. 31. 22:48
Object.freeze() 란?
MDN 문서에서는 Object.freeze()는 '객체를 동결하기 위한 메서드'라고 설명한다. 동결된 객체는 더 이상 새로운 속성을 추가하거나 존재하는 속성을 제거하는 것을 방지한다. 즉 Object.freeze() 를 사용하면 immutable(불변하는) 객체를 만들 수 있다는 뜻이다.
그럼 예제를 살펴보자.
let cat = {name:seven};
Object.freeze(cat);
cat.name = 'one';
console.log(cat) // => {name:seven};
이것처럼 let 로 선언한 객체를 Object.freeze() 로 동결하였다.
따라서 객체의 property(속성)을 변경하지 못했다.
cat = {code:'meow'};
console.log(cat); // => {code:'meow'};
하지만 이처럼 Object.freeze()는 객체의 속성을 변경할 수는 없지만 재할당은 허용한다.
그래서 진정으로 immutable 한 객체를 만들기 위해서 우리는 어떻게 해야 할까?
바로 const + Object.freeze() 를 쓰는 것이다.
const s1 = {name:'cat'};
Object.freeze(s1);
const s2 = {name:'pizza'};
s1.name='book';
console.log(s1); // => {name:'cat'};
s1 = s2;
console.log(s1); //Error
사실 개발공부 시작한지 얼마 안되서 아직 많이 미숙하네요.
그래도 그냥 훑고 지나가는 것보다 이렇게 하루 공부한 걸 적어두는 게 더 낫다고 생각해서 이렇게 올려봅니다.
읽어주셔서 감사합니다.