# 객체 리터럴

자바스크립트에서 단순한 데이터 타입은 number, string, boolean, null, undefined가 있습니다. 이외의 나머지 값들은 모두 객체 입니다. 숫자, 문자열, 불리언은 메소드가 있기 때문에 유사 객체라고 불리기도 합니다. 하지만 이들은 값이 정해지면 변경이 될 수가 없습니다. 자바스크립트에서 Array, Function, Regex과 같은 것이 객체 입니다.

자바스크립트에는 객체에 있는 속성들을 다른 객체에 상속하게 해주는 프로토타입 연결 특성이 있습니다. 이 특성을 잘 활용하면 객체를 초기화 하는 시간과 메모리 사용을 줄일 수 있습니다.

객체 리터럴은 새로운 객체를 생성할 때 매우 편리한 표기법을 사용합니다. 이 표기법은 하나 이상의 이름/값 쌍들을 둘러싸는 중괄호로 표현합니다.

let empty_object = {}; // 빈 객체 생성
let user = {
  name: 'damo',
  age: 43,
}; // user 객체 생성

속성(Property)의 이름은 어떤 문자열이라도 가능합니다. 여기에는 빈 문자열도 포함이 되며 속성 이름에 사용할 수 있는 유효한 이름이고 예약어가 아닌경우에는 생략이 가능합니다. 쉼표는 속성:값 들을 구분하는데 사용합니다.

let user = {
  'first-name': 'John', // 속성에 따음표가 필요함
  last_name: 'Kim', // 속성에 따음표 생략이 가능함
};

속성의 값에는 어떠한 표현식도 가능합니다. 다음긔 객체 리터럴도 가능합니다.

let user = {
  name: 'Damo',
  age: 34,
  skills: ['Html5', 'CSS', 'Javascript'],
  isHuman: true,
  location: {
    country: 'kr',
    state: 'seoul',
  },
};