자바스크립트는 객체 기반의 프로그래밍 언어이며 자바스크립트를 구성하는 거의 모든 것이 객체이다. 원시값을 제외한 나머지 값들은 모두 객체이다.
원시 타입은 단 하나의 값만을 나타내지만 객체 타입은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료 구조이다.
객체는 0개 이상의 프로퍼티로 구성된 집합이며 프로퍼티는 키와 값으로 구성된다.
var person = {
name: 'Lee',
age: 20
};
자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 자바스크립트의 함수는 일급 객체이므로 값으로 취급할 수 있다.
객체 생성은 여러가지 방법으로 생성을 할 수 있다.
이러한 객체 생성 방법 중에서 가장 일반적이고 간단한 방법은 객체 리터럴을 사용하는 방법이다.
객체 리터럴은 중괄호({...})내에 0개 이상의 프로퍼티를 정의한다.
객체는 프로퍼티들의 집합이며 프로퍼티는 키와 값으로 구성된다.
const person = {
name: 'Lee',
age: 20
};
프로퍼티 키와 프로퍼티 값으로 사용할 수 있는 값은 다음과 같다.
프로퍼티 키는 프로퍼티 값에 접근할 수 있는 이름으로서 식별자 역할을 한다.
하지만 반드시 식별자 네이밍 규칙을 따라야하는 것은 아니다. 단 식별자 네이밍 규칙을 준수하는 프로퍼티 키ㅘ 그렇지 않은 프로퍼티 키는 미묘한 차이가 있다.
네이밍 규칙을 따르지 않으면 반드시 따옴표를 사용해서 접근해야한다. 만약 따르면 마침표와 따옴표를 사용할 수 있다.
식별자 네이밍규칙에서 예약어는 식별자 이름으로 지정할 수 없지만 프로퍼티 키는 사용해도 에러가 발생하지 않는다. 하지만 예상치 못한 에러가 발생할 여지가 있으므로 권장하지 않는다.
자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값으로 사용할 수 있다고 했다.
그래서 함수는 값으로 취급할 수 있기 때문에 프로퍼티 값으로 사용할 수 있다.
var circle = {
radius: 5, // ← 프로퍼티
// 원의 지름
getDiameter: function () { // ← 메서드
return 2 * this.radius; // this는 circle을 가리킨다.
}
};
console.log(circle.getDiameter()); // 10