const user = {
name: 'Loopy',
age: 10,
email: 'z_zzz7@naver.com'
}
const {name, age, email} = user
const name = user.name
const name = user['name']
과 동일const {name, age, email, address='Korea'} = user
객체 내 없을 경우 대비해 기본값 지정 가능 (값이 존재하면 기본값은 무시됨)const {name: loopy, age, email} = user
key 이름인 name 대신 loopy라는 이름으로 사용 가능 (앞으로 name은 사용 불가)const [, ,c] = arr1
쉼표는 지우면 안돼요arr1 = ['A', 'B', 'C']
function toObject(a, b, c){
return {
a: a,
b: b,
c: c
}
}
const toObject (a, b, c) => ({a, b, c})
console.log(toObject(...arr1))
...arr1은 arr1의 요소를 쉼표로 구분해 모두 전개b=a
의 경우 같은 주소 참조하므로 둘 중 하나가 변하면 나머지 하나도 자동으로 변하는 효과1) 얕은 복사: 객체 안의 객체 중 하나 이상이 원본 객체를 참조
const copyUser = Object.assign({},user)
// const copyUser = {...user} 둘 다 얕은 복사
console.log(user===copyUser) // false
user.emails.push('z_zzz7@naver.com') // user, copyUSer 양쪽에 동시 삽입
console.log(user.emails===copyUser.emails) // true (같은 메모리 주소 공유)
2) 깊은 복사: 객체 안에 객체까지 원본과의 참조가 완전히 단절
$ npm i lodash
$ npm run dev
import _ from 'lodash'
const copyUser = _.cloneDeep(user) // 깊은 복사
user.emails.push('z_zzz7@naver.com') // user에만 삽입
👉🏻🌟 참조형 데이터 내부에 참조형 데이터가 다시 존재할 때에는 깊은 복사 사용하는게 안전! (lodash 활용)