const userAge {
name: 'dongdu',
age: 22,
}
const userEmail {
name: 'dongdu',
email: '4012popo@naver.com'
}
const target = Object.assign(userAge, userEmail)
console.log(target)
console.log(userAge)
console.log(target === userAge) // true 같은 곳을 바라보고 있기 때문
const a = {k: 20}
const b = {k: 20}
console.log(a === b) // false 다른 곳을 바라보고 있기 때문
=> 참조하는 것
새로운 객체를 만들 때는?
const target = Object.assign({}, userAge, userEmail)
=> 비어있는 객체 활용
const user {
name: 'dongdu',
age: 22,
email: '4012popo@naver.com'
}
const keys = Object.keys(user)
console.log(keys) // ['name', 'age', 'email'] 출력
구조 분해하여 사용할 데이터만 가져올 수 있음
없는 데이터에 기본값 지정 가능 => 데이터가 원래 있으면 무시됨
다른 이름으로 변경도 가능
음,,,,,,,,,,,,잘 모르겠음,,,,,,,,,,,
const user = {
name: 'dongdu',
age: 22,
email: '4012popo@naver.com'
}
const { name: dongdu, age, email, address = 'korea' } = user
console.log(${name})
console.log(${age})
console.log(${email})
console.log(address)
...이렇게 마침표 세 개 사용!
전개하는 연산자
const abc = ['a', 'b', 'c']
console.log(abc)
console.log(...abc)
//console.log('a', 'b', 'c')와 같이 출력됨
const abc = ['aa', 'bb', 'cc', 'dd']
function toObject(a, b, ...c) { // c에 나머지가 모두 들어감
return {
a: a,
b: b,
c: c,
}
}
console.log(toObject(...abc))
새로운 원시데이터를 할당하였을 때 그 원시데이터가 기존 메모리에 있다면 기존에 존재하는 메모리 주소를 같이 보게 한다.
let a = 1;
let b = 2;
console.log(a === b) // false 출력
=> a와 b는 서로 다른 메모리 주소를 바라보고 있기 때문에 같지 않은 것
a = b
console.log(a === b) // true 출력
=> a와 b는 둘 다 같은 메모리 주소를 바라보고 있기 때문에 같은 것
let c = 1;
console.log(a === c) // treu 출력
=> c는 a와 같은 메모리 주소를 바라봄
참조형 데이터는 같은 값을 할당한다고 해서 같은 메모리를 보게 하지 않는다.
이는 참조형 데이터의 메모리 가변성이라고 한다.
let a = {k : 1}
let b = {k : 1}
console.log(a === b) // false 출력
참조형 데이터를 수정할 때 메모리 가변성 때문에 문제가 생길 수 있다.
같은 메모리를 바라보고 있는 참조형 데이터를 수정하면 의도하지 않은 다른 데이터까지 수정이 되는 경우이다.
이때 얕은 복사를 사용하면 문제업뜸
assign 사용 얕은 복사
전개 연산자 사용 얕은 복사
자바스크립트로 깊은 복사하기는 쪼끔 힘들어유