Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Lexical environment
- relatedTarget
- 비동기 작업
- 자바스크립트
- debounce
- AbortController
- 웹팩
- fetch 취소
- hoisting
- 번들러
- Call stack
- 호출 스택
- 이벤트 루프
- 넘블
- JavaScript
- 호이스팅
- 화살표 함수
- pushstate
- localtunnel
- 함수형
- 이터러블
- 클론코딩
- 렉시컬 환경
- 유사배열
- 매클로태스크
- webpack
- 로드마크
- 마이크로태스크
- 로컬터널
- 실행 컨택스트
Archives
- Today
- Total
내가 보려고 만든 개발 공부 일지
Javascript 객체의 복사 본문
객체를 복사하고플때 그냥 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