> For the complete documentation index, see [llms.txt](https://injun-woo30000.gitbook.io/growth-log/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://injun-woo30000.gitbook.io/growth-log/i-learned/programing-language/javascript/tcp-school/undefined-9.md).

# 객체

자바스크립트에서 객체의 프로퍼티를 참조하는 방법은 다음과 같다.

```
객체이름.프로퍼티이름
또는
객체이름["프로퍼티이름"]
```

메소드를 참조할 때 메소드 이름 뒤에 괄호(())를 붙이지 않으면, 메소드가 아닌 프로퍼티 그 자체를 참조하게 된다. 따라서 괄호를 사용하지 않고 프로퍼티 그 자체를 참조하게 되면 해당 메소드의 정의 그 자체가 반환된다.

### 객체의 생성

자바스크립트에서 객체를 생성하는 방법은 다음과 같다.

1. 리터럴 표기(literal notation)를 이용한 방법

   ```
   var 객체이름 = {
     프로퍼티1이름: 프로퍼티1의 값
     ...
   }
   ```
2. 생성자 함수(constructor function)를 이용한 방법

   ```
   var day = new Date(); // new 연산자를 사용하여 Date 타입의 객체를 생성함.
   document.write("올해는 " + day.getFullYear() + "년입니다.");
   ```
3. Object.create() 메소드를 이용한 방법 Object.create() 메소드는 지정된 프로토타입(prototype) 객체와 프로퍼티를 가지고 새로운 객체를 만들어준다.

   따라서 이 메소드를 이용하면 사용자가 프로토타입 객체를 직접 명시할 수 있으므로, 상당히 유용하게 사용된다.

   ```
   Object.create(프로토타입객체[, 새로운객체의프로퍼티1, 새로운객체의프로퍼티2, ...]);
   ```

   **Object.create() 메소드의 첫 번째 인수로는 프로토타입으로 사용할 객체를 전달한다.** 두 번째 인수로는 새로운 객체의 추가할 프로퍼티 정보를 전달한다.
