티스토리 뷰
라이브러리를 사용하지 않고 하는 간단한 깊은 복사 방식
먼제 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/
Object.assign() - JavaScript | MDN
Object.assign() 메서드는 출처 객체들의 모든 열거 가능한 자체 속성을 복사해 대상 객체에 붙여넣습니다. 그 후 대상 객체를 반환합니다.
developer.mozilla.org
JSON.parse()와 JSON.stringify()
Engineering Blog by Dale Seo
www.daleseo.com
'개발' 카테고리의 다른 글
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
- 마케팅
- 인포그래픽
- 비즈니스
- 서울시
- 성격강점검사
- 홈카페
- 네스프레소
- 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 | 29 | 30 |
31 |