개발Story

structuredClone() 구조화된 복제 알고리즘  을 사용하여 주어진 값의 깊은 복제본  을 생성합니다 .

 

개발을 진행하며 깊은 복사를 진행할 경우 JSON 메서드, lodash의 deepclone 함수, deepCopy를 사용하였지만,

WEB API에 structuredClone()를 이용하면 된다.

 

[deepCopy 함수]

<javascript />
function deepCopy(obj) { const clone = {} for (var key in obj) { if (typeof obj[key] == 'object' && obj[key] != null) { clone[key] = deepCopy(obj[key]) } else { clone[key] = obj[key] } } return clone }

 

[structuredClone 구문]

<javascript />
structuredClone(value) structuredClone(value, options)

 

Parameter Description
value 복사할 원본 객체
transfer (Option) An array of transferable objects in value that will be moved rather than cloned to the returned object.

[적용]

<javascript />
const original = { profile: {name:'철수', age:12}, grade: 'A', date: new Date('2022-01-01') }; const clone = structuredClone(original); clone.profile.name = '영희'; clone.grade = 'B'; console.log(original) // {profile: {name: '철수', age: 12}, // grade: 'A', // date: Sat Jan 01 2022 09:00:00 GMT+0900 (한국 표준시)}} console.log(clone); // {profile: {name: '영희', age: 12}, // grade: 'B', // date: Sat Jan 01 2022 09:00:00 GMT+0900 (한국 표준시)}}

 

JSON타입에서 지원하지 않는 Date타입도 복사가 가능하다.

structuredClone함수로는 함수(Method)를 복제할 수 없다.

https://paperblock.tistory.com/218

 

JavaScript의 새로운 객체 복사 방법 - Structured Clone

자바스크립트(Javascript)를 이용하여 코딩을 하는 경우 상당히 자주 만나게 되는 경우가 객체 복사입니다. 단순하게 A = B와 같은 방식으로 할당하는 경우, 객체 A의 변경이 B에 영향을 주게 되기 때

paperblock.tistory.com

 

'Javascript > 문법' 카테고리의 다른 글

[Javascript] Promise.allSettled(feat. Promise.all 차이)  (0) 2023.07.09
[jvascript] encodeURIComponent  (0) 2023.04.16
[JavaScript] this  (0) 2023.01.02
[javascript] Promise.all()  (0) 2022.11.02
[javascript] 정규표현식  (0) 2022.08.28
profile

개발Story

@슬래기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!