[JavaScript] 자바스크립트 객체 수정 제한하기

2022. 6. 3. 21:46Program/JavaScript

067_자바스크립트 객체 수정 제한하기

[적용]

  • 객체의 깊은 계층까지 수정을 제한하고 싶을 때

[문법]

메소드 의미 반환
Object.freeze(객체) 객체의 수정을 제한  객체
Object.isFrozen(객체) 객체의 수정 제한 확인  진리값

[내용]

객체는 const도 속성의 추가, 삭제, 변경이 가능하다.

const object1 = { id: 10, name: '사자' };
object1.id = 12;  // 속성 변경 가능
object1.address = '서울';  // 속성 추가 가능

 

속성의 추가, 삭제, 변경의 제한은 Object.freeze()를 사용한다.

오류 검사 설정은 'use strict'*를 사용한다.

*ESS에서 추가된 기능으로 이전 버전에서는 무시했던 에러 부분의 관리를 도와주고 선언되지 않은 변수의 사용이나 변수의 삭제 등을 불가능하도록 만들어 안정적인 프로그래밍이 이루어지도록 한다. 반드시 스크립트의 시작 부분에 표기하자.

(https://www.w3schools.com/js/js_strict.asp)

 

'use strick';

const object2 = { id: 10, name: '사자' };
Object.freeze(object2);

object2.id = 12;  // 속성을 변경할 수 없으므로 에러
object2.address = '서울';  // 속성을 추가할 수 없으므로 에러

 

배열의 수정도 제한이 가능하다.

'use strict';

const array1 = [1, 2, 3];
Object.freeze(array1);
array1.push(4);  // 속성을 변경할 수 없으므로 에러

 

객체의 수정 제한 확인은 Object.isFrozen() 을 사용한다.

'use strict';

const object2 = { id: 10, name: '사자' };
Object.freeze(object2);

console.log(object.isFrozen(object2));  // 결과: true

 


[APPENDIX]

객체 수정을 제한하는 다른 방법

객체의 수정을 제한하는 다른 메소드는 Object.seal(), Object.preventExtexsions()가 있다.

  • Object.seal(): 속성의 추가와 삭제 제한. 변경만 가능
  • Object.preventExtensions(): 속성의 추가 제한, 삭제와 변경만 가능

 


 

 

 

 

 

참조 :
실무에 바로 적용하는 자바스크립트 코드레시피 278
아케다 야스노부, 카노 타케시 지음 / 이춘혁 옮김