변수를 카피하는 방법은 총 네가지가 있다.
- 참조 할당
var a=[1,2,3];
var b=a;
▶ 단순히 '='로 연결하는 방법. 주소를 공유하기 때문에 하나를 변경 시 다른 하나도 같이 바뀐다.
- Assign
const p1 = {
age: 20,
};
const target = {
position: 'Frontend',
};
const p2 = Object.assign(target, p1);
▶ Assign method를 이용하여 카피한다. 다만 1레벨 까지만 카피가 된다.
- Spread Operator
const p1 = {
age: 20,
name: {
first: 'Jessie',
last: 'Jung'
}
};
const p2 = { ...p1 };
▶ ES6 spread operator를 이용하여 카피한다. 다만 1레벨 까지만 카피가 된다.
- JSON 객체 메소드
const p1 = {
age: 20,
name: {
first: 'Jessie',
last: 'Jung'
},
sayHello: () => {
console.log('hello world!');
},
};
const p2 = JSON.parse(JSON.stringify(p1));
▶ JSON 객체로 변경 시킨 뒤 다시 파싱한다. (함수 복사가 안되는 문제가 있고, 속도가 매우 느리다.)
- 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 카피 끝판왕!!