본문 바로가기

나의 FE피봇이야기/Javascript

[immutability]불변값

 

생활코딩

primitive type : 더 이상 쪼갤 수 없는 단위로 생각해보기

Object :

 

생활코딩

 

우리가 object.assign을 통해서 복제를 하면 복제한(오리지날) 객체의 property 들만 복제를 하는 것.

따라서 그 복제한 property 중 value가 object인 경우, 그 object 값을 복제하는 것이 아니라 그 object의 위치만 복제.

 

property 중 원시데이터(primitive) type은 기존 원시 타입처럼 저장. 반면, 배열과 같은 object typed은 reference로 저장.

 

 

얕은 복사

object.assign === const anyName = [ ...참조배열 ] / { ... 참조객체 }

가장 밖에 있는  [ ] / { } 는 복사가 되고 내용은 참조

 

값까지 복사를 하고 싶다면?

JSON.parse(JSON.stringify(원하는 배열)) ==> object.assign + object.score.concat

 

깊은 복사

const anyName = 참조배열

 

concat() method 를 사용하여 복제

 

 

 

 

o1.name의 값이 kim -> lee로 변경

 

 

참조

https://www.youtube.com/watch?v=HN1-5v81Fzc&list=PLuHgQVnccGMBxNK38TqfBWk-QpEI7UkY8&index=7

https://www.youtube.com/watch?v=4Y5_kxXolIs&list=PLcqDmjxt30RvEEN6eUCcSrrH-hKjCT4wt&index=86