반응형
자바스크립트에서 object를 "=" 로 받아오면 참조만 한다.
아래의 코드에서 a의 color를 변경하였는데, b도 변경됨을 알 수 있다.
깊은 복사의 가장 간단한 방법은 object를 문자열로 바꾸고, 그 문자열을 다시 object로 바꾸는 것이다.
JSON.stringify에 a를 넘겨주면 text로 된 object를 return한다.
JSON.parse를 이용하면 문자열을 object로 변경해준다.
JSON.parse는 object 형태의 문자열만 parsing한다. 따라서 parsing이 불가능한 경우는 SyntaxError를 뱉는다.
이제 a의 color를 blue로 변경해도, b는 변경되지 않음을 알 수 있다. (deep copy)
함수로 만들면 아래와 같이 만들 수 있다.
export function deepCopy(obj) {
return JSON.parse(JSON.stringify(obj));
}
반응형
'개발 > JavaScript' 카테고리의 다른 글
자바스크립트 - 펼침 연산자로 문자열을 배열로 바꿔 수정하기 (Change String using Spread Operator) (0) | 2023.06.22 |
---|---|
자바스크립트 - 텍스트를 클립보드에 복사하기 (Copy to Clipboard in Javascript) (0) | 2023.06.19 |
자바스크립트 - 파일 다운로드 (JavaScript File Download) (0) | 2022.05.21 |
html input 태그에서 비밀번호 표시 여부 설정하기 (0) | 2022.03.09 |
input 에서 자동 완성 끄기, 캐시 삭제하기 (0) | 2022.03.09 |
댓글