Object.assign 문법 확인
열거할 수 있는 하나 이상의 소스 오브젝트로 부터 타켓 오브젝트로 프로퍼티들을 복사하는데 사용
Object.assign(target, ...sources)
참조를 복사한다고 함
=> 원본 변경 시 같이 변경됨
다른 방법
JSON.parse(JSON.stringify(a)) 인듯함
결론은 병합을 하는 것 이였음
url : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
소스
<html>
<body>
<script type="text/javascript">
var ori = {a:1, b:2, c:3};
console.log(ori);
var cpy = Object.assign({}, ori);
console.log(cpy);
cpy.c = 4;
cpy.d = 5;
console.log(ori);
//큰 영향 없음
//ori 에 객체형이 있을 경우
//그 객체를 복사한 obj에서 변경할 경우 값참조가 됨 그외에는 값참조 아닌듯
var ori2 = {a:1, b:2, c:3, d:{a:1}};
var cpy2 = Object.assign({}, ori2);
console.log(ori2);
cpy2.d.a = 5;
console.log(cpy2);
console.log(ori2);
//병합
var o1 = {a:1, b:2, c:3};
var o2 = {a:2, b:3};
var o3 = {a:3};
var c1 = Object.assign(o1, o2, o3);
console.log(o1);
console.log(o2);
console.log(o3);
console.log(c1);
</script>
</body>
</html>