객체 리터럴01 - 객체란?
"객체 리터럴"
1. 객체란?
자바스크립트는 객체(object) 기반의 프로그래밍 언어이며 자바스크립트를 이루고 있는 거의 "모든 것"이 객체이다. 원시 값을 제외한 나머지 값들(함수, 배열, 정규 표현식 등)은 모두 객체이다.
원시 타입은 단 하나의 값만을 나타내지만 객체 타입(object / reference type)은 다양한 타입의 값(원시 값 또는 다른 객체)들을 하나의 단위로 구성한 복합적인 자료 구조(Data structure)이다. 또한 원시 타입의 값, 즉 원시 값은 변경 불가능한 값(immutable value)이지만 객체 타입의 값, 즉 객체는 변경 가능한 값(mutable value)이다. 예를 들어 변수 x에 할당 된 값 1을 직접적으로 변경할 수 없고, 재할당을 통해서만 변수값을 바꿀 수 있다. 이처럼 원시값은 변경이 불가능한 값이다.
자바스크립트의 객체는 키(key)와 값(value)으로 구성된 프로퍼티(Property)들의 집합이다.

자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 자바스크립트의 함수는 일급 객체이므로 값으로 취급할 수 있다. 따라서 프로퍼티 값으로 함수를 사용할 수도 있다. 프로퍼티 값이 함수일 경우 일번 함수와 구분하기 위해 메소드(Method)라 부른다.

이처럼 객체는 프로퍼티와 메소드로 구성된 집합체이다. 프로퍼티와 메소드의 역할은 아래와 같다.
- 프로퍼티: 객체의 상태를 나타내는 값(data)
- 메소드: 프로퍼트(상태 데이터)를 참조하고 조작할 수 있는 동작(behavior)
이와 같이 객체는 객체의 상태를 나타내는 값(프로퍼티)과 프로퍼티를 참조하고 조작할 수 있는 동작(메소드)를 모두 포함할 수 있기 떄문에 상태와 동작을 하나의 단위로 구조화할 수 있어 유용하다.