- 다수의 원시 자료형을 포함하거나 복잡한 개체(entity)를 표현할 수 있는 자료형
- Object() 혹은 {}를 통해 생성
- key:value 형태로 표현하며, 접근은 object.key 형태로 표현
let user = {
name: "john",
age: 27
};
- object의 값을 복사할 때는 대상 전체가 아닌 object 내 주소 값만 복사되는 문제 발생
- 가리키는 대상 전체를 복사하는 방법은 얕은 복사(Shallow copy), 깊은 복사(Deep copy)를 통해 가능
- 얕은 복사는 객체 내의 객체까지 복사하지는 못한다. 깊은 복사는 객체 내의 객체까지 전부 복사한다.
// 1. 얕은 복사
let user = {
name: "john",
age: 27
};
// 1-1. for문을 통해 하나하나 넣기
let admin_1 = {};
for (let key in user){
admin_1[key] = user[key]
}
// 1-2. Object.assign() 이용
let admin_2 = Object.assign({}, user);
// 1-3. 펼침연산자 이용
let admin_3 = { ...user }
// 2. 깊은 복사
let user_2 = {
name: "john",
age: 23,
sizes: {
height: 180,
weight: 72,
},
}
// 2-1. JSON 객체를 이용한 복사. stringify는 객체를 문자열로 변환하는데 이때 원본 객체와의 참조가 끊김
let admin_json = JSON.parse(JSON.stringify(user))