이전 글에서
얕은복사와 깊은복사에 대해
간략하게 알아봤는데
이번엔 불변 객체를 만드는 법에 대해서 알아보자
let a = { name: 'ryu', hobbies: ['football', 'piano']}
a.name = 'kim'
console.log(a) // let a = { name: 'kim', hobbies: ['football', 'piano']}
a라는 객체가 있는데
이름을 kim으로 바꿔준 후
다시 a를 출력하면
당연하게도
kim이라는 name을 가지고있는 a객체를 반환한다.
하지만
let a = { name: 'ryu', hobbies: ['football', 'piano']}
Object.freeze(a)
a.name = 'kim'
console.log(a) // let a = { name: 'ryu', hobbies: ['football', 'piano']}
Object.freeze함수를 이용하여 객체를 얼려주면
그 요소를 변경시킬 수 없다.
또한
let a = { name: 'ryu', hobbies: ['football', 'piano']}
Object.freeze(a.hobbies)
a.hobbies[2] = 'running'
console.log(a) // { name: 'ryu', hobbies: ['football', 'piano']}
hobbies를 따로 프리징해주면
hobbies를 추가해도
변하지 않는 불변성을 유지할 수 있다.
반응형
'자바스크립트 > 자바스크립트란?' 카테고리의 다른 글
함수 선언문과 함수 표현식 그리고 호이스팅 (0) | 2022.07.20 |
---|---|
스코프, 호이스팅, TDZ (0) | 2022.07.20 |
얕은 복사와 깊은 복사 (0) | 2022.07.19 |
원시자료형과 참조자료형 (0) | 2022.07.19 |
undefined와 null (0) | 2022.07.19 |