> [!date] published: 2021-05-26
> [!Info]
> Do it! 웹 프로그래밍을 위한 자바스크립트 기본 편을 읽고, 공부하고, 정리한 글
> [책 정보](http://www.easyspub.co.kr/20_Menu/BookView/A001/295/PUB)
## 💛 객체란?
### ✨ 객체
```javascript
var book = {
title: "자바스크립트",
author: "홍길동",
pages: 300,
price: 30000,
};
```
### ✨ 객체의 종류
#### 내장 객체
자주 사용되는 요소는 자바스크립트 안에 이미 객체로 정의되어 있는데 이런 객체들을 내장 객체 (Built-in Object)라고 한다.
예: Number, Boolean, Array, Math...
#### 문서 객체 모델(DOM)
객체를 사용해 웹 문서를 관리하는 방식
DOM에서는 웹 문서 뿐만 아니라 그 안에 포함된 이미지, 링크, 텍스트필드 등도 모두 별도의 객체로 만들어 두었다.
예) Document, Image...
#### 브라우저 객체 모델
웹 브라우저의 주소 표시줄, 창 크기 같은 웹 브라우저의 정보를 객체로 다룬다.
예) Navigator(사용 중인 브라우저 종류, 버전), History(방문 기록), Location(주소 표시줄), Screen(화면 크기)...
#### 사용자 정의 객체
앞서 말한 DOM이나 브라우저 객체 모델도 내장 객체에 속한다.
내장 객체 외에도 사용자가 객체를 정의할 수 있음.
### ✨ 속성과 메소드
- 속성(Property): 객체에서 값을 담고 있는 정보
- 메소드(Method): 객체 안에 정의된 함수
객체의 속성이나 메소드에 접근할 때에는 마침표(.)를 사용해서 접근하면 된다.
📝 Window 객체는 모든 객체를 품고 있는 최상위 객체이기 때문에 Window 객체의 함수를 실행할 때에는 이름만 사용해서 실행할 수 있다. (예: `alert()`, `open()`...
### ✨ 프로토타입, 인스턴스
프로토타입(Prototype)은 어떤 객체들이 공통으로 가지는 속성이나 기능을 모아 둔 틀이라고 할 수 있다.
인스턴스(Instance)는 프로토타입을 사용해서 만들어 낸 객체를 말한다.
인스턴스를 만들기 위해서는 `new` 예약어를 사용한다.
```javascript
var now = new Date();
now.toLocaleString();
```
### ✨ 내장 객체 활용하기
sMath 객체를 활용해봅니다. (Math 객체와 관련된 함수들 [참고](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math#%EB%A9%94%EC%84%9C%EB%93%9C))
| 함수 | 설명 |
| ----------- | -------------------------------- |
| `abs(x)` | 숫자의 절댓값 반환 |
| `cbrt(x)` | 숫자의 세제곱근 반환 |
| `ceil(x)` | 숫자의 소숫점 이하를 올린다. |
| `floor(x)` | 숫자의 소수점 이하를 버린다. |
| `random(x)` | 0과 1사이에서 난수 반환 |
| `round(x)` | 숫자의 소수점 이하를 반올림한다. |
✏️ Math 객체는 따로 인스턴스를 생성하지 않고 바로 속성이나 함수를 사용할 수 있다.
## 💛 사용자 정의 객체 만들기
### ✨ 객체 리터럴
리터럴(Literal)이란 프로그래밍에서 자료를 표기하는 방식을 의미한다.
리터럴을 사용해서 표기한다는 것은 변수를 선언하면서 동시에 값을 지정해주는 표기 방식을 의마한다. `let a = 10;` 이런 것들...
**객체 리터럴 표기법** 이란 객체를 선언하면서 동시에 값을 지정해주는 것이다.
```javascript
var book = {
title: "목민심서",
author: "정약용",
year: 1818,
info: function () {
alert(this.title + "는 " + this.author + "이 쓴 책입니다.");
},
};
```
### ✨ 생성자 함수
리터럴 표기법을 이용해서 객체를 만드는 방법은 정해진 값을 가진 객체 1개만 만들 수 있다.
그래서 비슷한 객체를 여러 개 만들어야 하는 경우에는 리터럴 표기법을 이용해서 객체를 만드는 것이 번거로울 것이다.
생성자 함수를 이용해서 객체를 만드는 방법은 항상 필요한 속성과 함수를 틀처럼 미리 만들어 두고, 그 틀을 복제한 인스턴스를 만들어서 객체를 만드는 방법이다.