객체는 오직 하나의 데이터(문자열, 숫자 등)만 담을 수 있는 원시 자료형과는 달리 다양한 데이터를 담을 수 있다. 키로 구분된 데이터 집합 혹은 복잡한 개체를 저장할 수 있다.

객체는 중괄호 {…} 를 이용해 만들 수 있다. 중괄호 안에는 키(key) : 값(value) 쌍으로 구성된 프로퍼티를 여러 개 넣을 수 있는데, 키엔 문자형, 값엔 모든 자료형이 허용된다. 프로퍼티 키는 프로퍼티 이름이라고도 불린다.

참조에 의한 객체 복사

객체와 원시 타입 자료형의 근본적인 차이 중 하나는 객체는 참조에 의해 저장되고 복사된다는 것이다. 변수에 객체를 저장할 때, 객체의 동작 방식은 원시 타입과 다르다. 변수에는 객체가 저장되어 있는 메모리 주소인 객체에 대한 참조 값이 저장된다.

let user = { name: “John” };

다음과 같이 변수에 객체를 담을 때, 객체는 메모리 내 어딘가에 저장되고 변수 user에는 객체를 참조할 수 있는 값이 저장된다. 따라서 객체가 할당된 변수를 복사할 때에는 객체의 참조 값이 복사되고 객체는 복사되지 않는다.

let admin = user;

와 같이 코드를 작성하면 변수는 user, admin 두 개이지만 각 변수에는 동일 객체에 대한 참조 값이 저장되는 것이다. 따라서 객체에 접근하거나 객체를 조작할 때는 여러 변수를 사용할 수 있다.

<aside> 💡

</aside>