[Javascript]Swallow copy / deep copy

코드왕·2022년 7월 11일
0
post-thumbnail
post-custom-banner

변수를 카피하는 방법은 총 네가지가 있다.

  1. 참조 할당
var a=[1,2,3];
var b=a;

▶ 단순히 '='로 연결하는 방법. 주소를 공유하기 때문에 하나를 변경 시 다른 하나도 같이 바뀐다.

  1. Assign
const p1 = {
  age: 20,
};
const target = {
  position: 'Frontend',
};
const p2 = Object.assign(target, p1);

▶ Assign method를 이용하여 카피한다. 다만 1레벨 까지만 카피가 된다.

  1. Spread Operator
const p1 = {
  age: 20,
  name: {
    first: 'Jessie',
    last: 'Jung'
  }
};

const p2 = { ...p1 };

▶ ES6 spread operator를 이용하여 카피한다. 다만 1레벨 까지만 카피가 된다.

  1. JSON 객체 메소드
const p1 = {
	age: 20,
	name: {
		first: 'Jessie',
		last: 'Jung'
	},
	sayHello: () => {
		console.log('hello world!');
	},
};

const p2 = JSON.parse(JSON.stringify(p1));

▶ JSON 객체로 변경 시킨 뒤 다시 파싱한다. (함수 복사가 안되는 문제가 있고, 속도가 매우 느리다.)

  1. lodash의 cloneDeep
const clonedeep = require("lodash.clonedeep");

const p1 = {
	age: 20,
	name: {
		first: 'Jessie',
		last: 'Jung'
	},
	sayHello: () => {
		console.log('hello world!');
	},
}
const p2 = clonedeep(p1);

▶ lodash의 라이브러리를 사용한다. deep 카피 끝판왕!!

Swallow copy vs deep copy

profile
CODE DIVE!
post-custom-banner

0개의 댓글