자자 ~ 오늘 포스팅 내용은 무엇이냐~
Nested Object ! 중첩된 객체 이다 !
이전 포스팅에서 Immutability (불변성)에 대해 이야기 해보았다. 이번 포스팅은 그의 연장선인데,
바로
var o1 = {name: 'kim', score:[1,2]};
|
위 코드와 같이 객체 { } 안에 [ ] 배열이 있는 경우에 객체를 복사하였을 때, 원본은 변화 시키지 않는 방법이다.
1
2
3
4
|
var o1 = {name: 'kim', score:[1,2]};
var o2 = Object.assign({}, o1);
o2.score.push(3);
|
o2 를 Object.assign을 통해 복사 한뒤, score.push(3) 을 하게 되면, o2 내의 score 뿐만 아니라, o1 내의 score 또한 [1, 2, 3] 으로 바뀌게 된다. 이유인즉슨, 전체 객체는 복사하여 새로운 메모리에 할당을 하였지만, score 이라는 배열 객체는 o1, o2 모두 같은 메모리를 할당 받았기 때문이다.
이를 방지하기 위해서는, concat() 을 이용하면 된다 !
concat() 은 Object.assign() 과 마찬가지로, 데이터를 복사해서 새로운 위치에 넣어주는 역할을 한다. -> 배열일 경우 !
그리고 그 후에, o2.score.push(3)을 해주면,
1
2
3
4
|
var o1 = {name: 'kim', score:[1,2]};
var o2 = Object.assign({}, o1);
o2.score = o2.score.concat();
o2.score.push(3);
|
o1.score = [1, 2] 이며, o2.score = [1, 2, 3] 이 된다 !
오늘도 하나 배웠다 ! 굳 !
이 포스팅을 보시는 분 중 제가 틀린 부분, 잘못 이해한 부분이 있어 알려주실만한 내용이 있다면 언제든 편하게 댓글 남겨주세요 :) 감사합니다 !
728x90
반응형
'비개발자, CPO가 되기까지' 카테고리의 다른 글
#1 Sketch 입문_2020-02-21 (0) | 2020.02.21 |
---|---|
19.12.23 개발기록 -[Javascript] Newsfeeds 의 ~시간 전, ~분 전 구현하는 것과 기 올린 게시물의 시간에 따라 상태 변화 구현의 차이점 (0) | 2019.12.24 |
19.12.22 개발기록 -[Javascript] Javascript Immutability(불변성) (0) | 2019.12.22 |
19.12.17 개발기록 -[Javascript] 개발 중 비동기로 인한 이슈 사항 (0) | 2019.12.18 |
19.12.16 개발기록 -[Javascript] switch 조건문을 이용하던 중 오늘 내가 한 실수 기록. (0) | 2019.12.17 |
댓글