거북이개발자

[JavaScript] Immutability(객체 불변만들기) 본문

Web/JavaScript

[JavaScript] Immutability(객체 불변만들기)

류정식 2021. 2. 19. 17:12

1. freeze

 

(1). 변경 가능

var o1 = {name:'kim', score:[1,2]}

//many code

o1.name = 'lee';

객체의 경우도 많은 코드들이 추가되면 객체 내용물이 변형이 생길 수 있다.

 

(2). freeze

var o1 = {name:'kim', score:[1,2]}
Object.freeze(o1);

//many code

o1.name = 'lee';

객체의 내용을 변경하기 싫을 시 freeze을 이용해준다.

이렇게 변경하려고 시도하면 에러가 나오는 걸 볼 수 있다.

위 사진처럼 변경이 없는 것을 볼 수 있다.

 

(2). 중첩 객체 freeze

var o1 = {name:'kim', score:[1,2]}
Object.freeze(o1);
Object.freeze(o1.score);

//many code

o1.name = 'lee';

중첩이 있을 시 따로 중첩된 객체에도 freeze를 적용해야 변경을 막을 수 있다.

 

 

 

 

2. freeze vs const

 

const o1 = {name:'kim'}
Object.freeze(o1);
const o2 = {name:'lee'}
// o1 = o2;
o1.name = 'park';
console.log(o1);

-freeze : 객체안의 내용 변경을 막을 수 있다. 단 o1=o2와 같은 객체 변경을 막을 수는 없다.

-const : 객체의 변경을 막을 수 있다. o1=o2와 같은 변경을 막을 수 있다.

Comments