let user = {
name : 'garam',
age : 25
}
let admin = {}
//첫번째 얕은복사
for (let key in user) {
admin[key] = user[key]
}
// 두번째 얕은복사
let admin = Object.assign({}, user)
Objeect.assign()
두 객체를 병합해서 반환시켜줌
// 세번째 얕은복사
let admin = {... user}
{ . . . user }
전개연산자
user내의 모든 필드값을 뿌려라
={user.name, user.age} 랑 같은의미
새로운 공간을 만들고 각각의 내용을 가르켜라
이런 문제를 해결하기 위해 깊은 복사가 나오게 됨
깊은 복사 -> 내부에 주소값이 있으면 알아서 얕은 복사를 한번 더 함
✔json 객체
restful api 에서 데이터 송수신 할 때 많이 쓰는 포멧
// 두번째 깊은복사
let admin = JSON.parse(JSON.stringify(user))
stringify 함수로 object를 string으로 변환 -> parse 함수를 통해 다시 json으로 만들어줌 (다시 object로 옴)
Q. 왜 문자열로 갔다가 다시 오브젝트로 오는 가?
내부에 어떤 단계적 오브젝트가 있던간에 문자열에 있는 것들을 모두다 다시 새로운 오브젝트로 만들어준다고 함
문자열에 값이 있으면 ture
값이 없으면 false
숫자 0은 false
0이 아니면 다 true
✔몫 구하기
parseint(31 / 10)
++(피연산자)
결과값이 그 행부터 바로 반영됨
(피연산자)++
결과값이 다음 행부터 반영됨
5 == '5'
true
자동으로 형변환이 됨
값에 대한 본질 비교
문자열에 대한 비교
첫번째값부터 비교 순차적으로 비교하다가 그 이후의 값이 한쪽이 크게되면 판단 (알바벳 순서상 뒤에 있거나, 문자가 더 길거나)
&&
둘 다 참이여야 참
||
둘 중 하나라도 참이면 참