참조타입(객체)은 속성을 추가/제거하거나 값을 변경하는 등 여러 변경이 일어날 수 있다.
만약 어떤 객체가 더이상 변경되지 않도록 막고싶다면 경우에따라 freeze(), seal()을 사용할 수 있다.
freeze() - 모든 변경을 막는 경우
새로운 속성 추가/제거, 속성의 값 변경을 포함한 모든 변경을 막는다. 설정 가능 여부, 쓰기 가능 여부가 모두 거짓이 된다!
또한 변경을 막은 객체를 반환한다.
const obj = {
prop: 42,
};
const returnObj = Object.freeze(obj);
obj.prop = 33; // 처리X, 에러발생X
console.log(obj.prop); // 42
console.log(obj === returnObj); // true
seal() - 속성 변경을 막는 경우
속성 추가/삭제가 불가능하고 속성의 값은 변경 가능하다. 마찬가지로 seal된 객체를 반환한다.
const obj = {
prop: 42,
};
const returnObj = Object.seal(obj);
obj.prop = 33;
obj.newProp = 10;
delete obj.prop;
console.log(obj); // { prop: 33 }
console.log(obj === returnObj); // true
'JavaScript' 카테고리의 다른 글
[JS] Scope, Class, this 바인딩 (0) | 2024.07.31 |
---|---|
[JS] 클래스 상속 / 클로저 (0) | 2024.07.29 |
[JS] 배열이 조건을 만족하는지 확인하기 (every, some) (0) | 2024.07.25 |
[JS] Generator 로그 순서 이해하기 (0) | 2024.07.24 |
[JS] 콜백지옥 해결방안 (기명함수, promise, generator, async/await) (0) | 2024.07.24 |