-
[JavaScript] Object.freeze : 객체를 불변하게 만들기, const(reference 규제)와의 차이점(freeze: 값을 규제)컴퓨터/JavaScript_typescript 2020. 2. 11. 14:07
* 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 : 생활코딩
'컴퓨터 > JavaScript_typescript' 카테고리의 다른 글
[JavaScript] textContent, innerHTML, innerText (0) 2020.04.07 How to make an exact copy of an element? (0) 2020.03.25 [weird JavaScript] type coercion, ==와 > < operator, ++, --도 type coercion 사용 (0) 2020.02.11 [javascript] Objects.keys(array), Object.getOwnPropertyNames(array), Object.entries(array) (0) 2020.02.06 JSON - parsing error (0) 2020.01.21