Skip to content

Latest commit

 

History

History
60 lines (46 loc) · 1.38 KB

4. 객체.md

File metadata and controls

60 lines (46 loc) · 1.38 KB

객체

1. 객체(object)

2. 객체 복사



1. 객체(object)

  • 다수의 원시 자료형을 포함하거나 복잡한 개체(entity)를 표현할 수 있는 자료형
  • Object() 혹은 {}를 통해 생성
  • key:value 형태로 표현하며, 접근은 object.key 형태로 표현
let user = {
  name: "john",
  age: 27
};

2. 객체 복사

  • 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))