const user = {
name: 'hyerin',
age: 95,
emails: ['abcde@gmail.com']
}
const copyUser = user
console.log(copyUser === user) //true
user.age = 22
console.log('user', user) //user {name: "hyerin", age: 22, emails: Array(1)}
console.log('copyUser',copyUser) //copyUser {name: "hyerin", age: 22, emails: Array(1)}
1. Object.assign()을 사용하여 복사
const user = {
name: 'hyerin',
age: 95,
emails: ['abcde@gmail.com']
}
const copyUser = Object.assign({}, user)
console.log(copyUser === user) //false
user.age = 22
console.log('user', user) //user {name: "hyerin", age: 22, emails: Array(1)}
console.log('copyUser',copyUser) //copyUser {name: "hyerin", age: 95, emails: Array(1)}
2. 전개 연산자(Spread)를 사용하여 복사
const user = {
name: 'hyerin',
age: 95,
emails: ['abcde@gmail.com']
}
const copyUser = {...user}
console.log(copyUser === user) //false
user.age = 22
console.log('user', user) //user {name: "hyerin", age: 22, emails: Array(1)}
console.log('copyUser',copyUser) //copyUser {name: "hyerin", age: 95, emails: Array(1)}
const user = {
name: 'hyerin',
age: 95,
emails: ['abcde@gmail.com']
}
const copyUser = {...user}
console.log(copyUser === user) //false
user.emails.push('xyz@naver.com')
console.log(user.emails === copyUser.emails) //true
console.log('user', user) //{name: "hyerin", age: 22, emails: Array(2)}
//emails: (2) ["abcde@gmail.com", "xyz@naver.com"]
console.log('copyUser',copyUser) //{name: "hyerin", age: 95, emails: Array(2)}
//emails: (2) ["abcde@gmail.com", "xyz@naver.com"]
const copyUser = _.cloneDeep(user)
console.log(copyUser === user) //false
user.age = 22
console.log('user', user) //{name: "hyerin", age: 22, emails: Array(1)}
console.log('copyUser',copyUser) //{name: "hyerin", age: 95, emails: Array(1)}
user.emails.push('xyz@naver.com')
console.log(user.emails === copyUser.emails) //false
console.log('user', user)
//{name: "hyerin", age: 22, emails: Array(2)}
// emails: (2) ["abcde@gmail.com", "xyz@naver.com"]
console.log('copyUser',copyUser) //{name: "hyerin", age: 95, emails: Array(1)}
예시