Javascript
Javascript 객체의 복사
kwangsunny
2021. 7. 2. 02:14
객체를 복사하고플때 그냥 var obj = obj2 이렇게 하면 obj 는 단순히 obj2 의 주소값만 참조게되어
obj2를 수정하면 obj 도 값이 바뀌게 되므로 이는 잘못된 방법이다.
1. 얕은 복사
var obj = {a : "aa", b : "bb"} 같은 단순한 객체는
for( var .. in .. ) 나 Object.assign( { }, obj ) 를 사용하여 새로운 객체를 만들수 있지만 만약
var person = {
age: 19,
name: {
first: 'kwang',
last: 'sunny'
}
}
이런 객체가 있을땐 위같은 방법을 써도 결국 person.name.last 값을 수정하면 복사된 객체의 last 값도 같이바뀌게된다
--> 1레벨만 복사되어 person.name 의 주소값을 참조하기 때문.
2. 깊은 복사
JSON.parse( JSON.stringify( obj ) ) --> .stringify 는 객체를 문자열로 만들어주고 .parse 는 문자열을 다시 객체로
만들어 리턴해준다 (새로운 객체)
# 위 방식의 단점이라면..?
단점 1 - 성능이 느리다.
단점 2 - 객체 속성값으로 함수가 있으면 그 속성은 무시된다.