컴퓨터/JavaScript_typescript
[JavaScript] Object.freeze : 객체를 불변하게 만들기, const(reference 규제)와의 차이점(freeze: 값을 규제)
수제녹차
2020. 2. 11. 14:07
728x90
반응형
* object는 쉽게 바뀔 수 있다.
var o1 = {name:'kim'. score[1,2]};
o1.name = 'lee';
console.log(o1); // o1이라는 원본을 바꿔버린다 {name:'lee', score[1,2]}
* Object.freeze
가변이면 안되는 데이터를 규제할 수 있다.
var o1 = {name:'kim'. score[1,2]};
Object.freeze(o1)
o1.name = 'lee';
console.log(o1); // {name:'kim', score[1,2]}
freeze를 풀고 싶다면 복사해야 한다.
* free한 객체 안에 다른 객체가 있다면 그것은 freeze하지 못한다.
var o1 = {name:'kim'. score[1,2]};
Object.freeze(o1)
o1.name = 'lee';
o1.city = 'Seoul';
console.log(o1); // {name:'kim', score[1,2]}
o1.score.push(3); // o1.score는 변한다. reference만 갖고 있기 때문.
console.log(o1); // {name:'kim', score[1,2,3]}
o1.score는 변한다. reference만 갖고 있기 때문.
이 때 따로
Object.freeze(o1.score);
를 해주면
o1.score.push(3) // error가 발생한다
* const와의 차이점
const : 가리키는 대상을 못 바꾸게 한다.
Object.freeze : 값을 못 바꾸게 한다.
const o1 = {name:'kim'};
Object.freeze(o1);
const o2 = {name:'kim'};
o1 = o2; // const 때문에 실패, error
o1.name = 'lee'; // freeze 때문에 실해
source : 생활코딩
반응형