내가 보려고 만든 개발 공부 일지

Javascript 객체의 복사 본문

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 - 객체 속성값으로 함수가 있으면 속성은 무시된다.

'Javascript' 카테고리의 다른 글

call() 과 apply() 의 this 바인딩  (0) 2021.07.02
Falsy / Truthy 한 값  (0) 2021.07.02
Tagged Templates  (0) 2021.07.02
event 제어와 좌표  (0) 2021.07.02
form 태그의 target 속성  (0) 2021.07.02
Comments