티스토리 뷰
라이브러리를 사용하지 않고 하는 간단한 깊은 복사 방식
먼제 json 메소드 parse와 stringify를 알아야한다.
JSON.parse()
- JSON 문자열을 javascript 객체로 변환
- JavaScript 객체로 변환된 데이터는 . 나 [] 기호를 사용하여 각 속성에 접근할 수 있다.
- 외부 문자열을 내장 데이터 타입으로 변환하는 역직렬화(deserialization) 과정에서 사용
JSON.stringify()
- javascript 객체를 JSON 문자열로 변환
- 특정 언어의 내장 타입의 데이터를 외부에 전송하기 용이하도록 문자열로 변환하는 직렬화(serialization)과정에서 사용
Object.assign()으로 할당할 때 깊은 복사
function test() {
'use strict';
let obj1 = { a: 0 , b: { c: 0}};
let obj2 = Object.assign({}, obj1);
console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}
obj1.a = 1;
console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}
obj2.a = 2;
console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 0}}
obj2.b.c = 3;
console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 3}}
console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 3}}
// 깊은 복사
obj1 = { a: 0 , b: { c: 0}};
let obj3 = JSON.parse(JSON.stringify(obj1));
obj1.a = 4;
obj1.b.c = 4;
console.log(JSON.stringify(obj3)); // { a: 0, b: { c: 0}}
}
test();
깊은 복사 : 원본을 바꾸어도 복사본에 아무 변화 없는 것
얕은 복사 : 원본을 통째로 복사한게 아니라 주소만 참조한거라 값을 바꾸면 원본-복사본 서로 영향을 주는 것
복사하고자 하는 대상이 배열일 경우에는 Object.assign 대신 concat, slice, Array.from 를 주로 이용한다.
참조, 출처
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
https://www.daleseo.com/js-json/
'개발' 카테고리의 다른 글
css module에서 global.css 통해 css variables 사용하기 (next.js환경) (0) | 2023.01.17 |
---|---|
로컬 pc를 외부에 공유하는 방법 - localtunnel(무료) (0) | 2022.08.05 |
네이버 부스트캠프 웹·모바일 자가진단 코딩테스트 문제 풀이 (0) | 2022.06.16 |
html 메타태그를 알아보자 (0) | 2022.04.20 |
빅오표기법 (Big-O notation), 보이는 학생 (0) | 2022.03.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 꿀팁
- 청년마음건강
- 심리상담
- 프로토타입
- 소품샵
- 넷플릭스
- 간접조명
- 인포그래픽
- 마음건강사업
- 마케팅
- 구매후기
- 커피
- webdesign
- 서울시
- 비즈니스
- 퍼블리싱
- 우유거품기
- XD
- 리뷰
- 침대조명
- 테이블조명
- 에어로치노
- 경기광고홍보제
- 복지로
- 디자인
- 광명이케아
- 성격강점검사
- 서울여행
- 홈카페
- 네스프레소
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함