728x90
728x90
✏️ 얕은 복사 Shallow Copy
const copyUser = Object.assign({}, user) // 복사 : .assign(대상객체, 출처객체)
✏️ 깊은 복사 Deep Copy
const copyUser = {...user} // 전개 연산자를 사용하여 복사.
- 깊은 복사 : lodash 사용 (.cloneDeep)
import _ from 'lodash'
// |1. { } |2. { } | 3. { }
// 얕은 복사(Shallow copy), 깊은 복사(Deep copy)
// 객체 데이터 할당
const user = {
name: 'Heropy',
age: 85,
emails: ['thesecon@gmail.com'] // 배열데이터
}
// 깊은 복사 -> lodash 사용.
// 객체 안에 또 다른 참조형 데이터가 있다면 깊은 복사를 권장.
// 참조정보들에 상관없이 복사 가능.
const copyUser = _.cloneDeep(user)
console.log(copyUser === user) // 일치 연산자 true => 같은 메모리 주소
user.age = 22
console.log('user', user) // age: 22
console.log('copyUser', copyUser) // age : 22 => 메모리 주소가 같아 자동 수정됨.
// 의도치 않게 엉뚱한 부분이 수정될 수 도 있음.
// => 따라서 참조형 데이터들(객체, 배열 등)은 복사라는 개념을 사용.
console.log('--------')
console.log('--------')
user.emails.push('neo@zillinks.com') // 가장 뒷부분에 내용 추가
console.log(user.emails === copyUser.emails) // emails 또한 참조형 데이터로 값 변화가 나타남.
console.log('user', user)
console.log('copyUser', copyUser)
728x90
728x90
'JavaScript' 카테고리의 다른 글
[JS] JavaScript Lodash 사용법 정리 (0) | 2021.07.27 |
---|---|
[JS] JavaScript _ Import, Export 정리 (0) | 2021.07.26 |
[JS] JavaScript 원시형 데이터 불변성 정리 (0) | 2021.07.24 |
[JS] JavaScript 전개 연산자(Spread) 정리 (0) | 2021.07.23 |
[JS] JavaScript 구조분해할당 정리 (0) | 2021.07.23 |