[1] 내장 생성자
- 자바스크립트에 처음부터 포함
- 이 생성자는 모든 자바스크립트 실행 환경에서 사용할 수 있다.
- 내장 생성자에는 이미 유용한 프로퍼티와 메서드가 마련되어 있어 이를 이용하여 객체를 생성하면 다양한 작업을 쉽게 처리할 수 있다.
< ECMAScript 5의 내장 생성자 >
| 생성자 이름 | 생성되는 객체 |
|---|---|
| Object | 일반 객체 |
| String | 문자열 객체 |
| Number | 숫자 객체 |
| Boolean | 논리값 객체 |
| Array | 배열 |
| Date | 날짜와 시간을 다루는 객체 |
| Function | 함수 객체 |
| RegExp | 정규 표현식 객체 |
| Error | 오류 객체 |
| EvalError | eval() 함수와 관련된 오류를 표현하는 객체 |
| InternalError | 자바스크립트 내부에서 발생한 오류를 표현하는 객체 |
| RangeError | 값이 허용 범위를 넘었을 때 발생한 오류를 표현하는 객체 |
| ReferenceError | 없는 변수를 참조할 때 발생한 오류를 표현하는 객체 |
| SyntaxError | 문법이 어긋날 때 발생한 오류를 표현하는 객체 |
| TypeError | 값이 기대한 타입이 아닐 때 발생한 오류를 표현하는 객체 |
| URIError | 잘못된 URI를 만났을 때 발생한 오류를 표현하는 객체 |
ECMAScript 6에서는 생성자가 더 추가되었다.
< ES6부터 추가된 주요 내장 생성자 >
| 생성자 이름 | 생성되는 객체 |
|---|---|
| Symbol | 심벌을 생성 |
| Int8Array8 | 부호가 있는 8비트 정수 배열을 생성 |
| Unit8Array8 | 부호가 없는 8비트 정수 배열을 생성 |
| Int16Array16 | 부호가 있는 16비트 정수 배열을 생성 |
| Unit16Array16 | 부호가 없는 16비트 정수 배열을 생성 |
| Int32Array32 | 부호가 있는 32비트 정수 배열을 생성 |
| Unit32Array32 | 부호가 없는 32비트 정수 배열을 생성 |
| Float32Array32 | 32비트 부동소수점 배열을 생성 |
| Float64Array64 | 64비트 부동소수점 배열을 생성 |
| ArrayBuffer | 고정 길이 이진 데이터 버퍼를 생성 |
| DateView | ArrayBuffer 데이터를 읽고 쓸 수 있는 수단을 제공 |
| Promise | 처리 지연 및 비동기 처리를 관리하는 수단을 제공 |
| Generator | 제너레이터 함수를 다룰 수 있는 수단을 제공 |
| GeneratorFunction | 제너레이터 함수를 생성 |
| Proxy | 객체의 기본적인 동작을 재정의하는 기능을 제공 |
| Map | key/value 맵을 생성 |
| Set | 중복을 허용하지 않는 데이터 집합을 생성 |
| WeakMap | 약한 참조를 유지하는 key/value 맵을 생성 |
| WeakSet | 약한 참조를 유지하는 고유한 데이터 집함을 생성 |
[2] Date 생성자
Date 생성자는 날짜와 시간을 표현하는 객체를 생성
Date 객체에 내장된 다양한 메서드를 활용하여 날짜와 시간 처리를 간단하게 할 수 있다.
var now = new Date(); console.log(now) // → Sun Dec 11 2022 18:27:47 GMT+0900 (한국 표준시)
Date 객체는 Date 생성자로 생성. 위 코드를 실행하면 실행 시점의 날짜, 시간 정보를 담은 객체를 생성하고, 그 객체의 참조를 변수 now에 대입한다. 이후 console.log를 사욯하면 Date 객체의 날짜와 시간 정보를 볼 수 있다.
Date 생성자의 인수로 날짜와 시간을 전달하면 그 날짜와 시간을 가리키는 Date 객체가 생성된다.
var then = new Date(2008, 5, 10); console.log(then); // → Tue Jun 10 2008 00:00:00 GMT+0900 (한국 표준시)
Date 객체는 계산식 안에서는 밀리초 단위 정수로 값의 타입이 바뀐다.
var elapsed = now - then; console.log(elapsed); // → 457727267442
이 성질을 활용하면 프로그램 실행에 걸리는 시간을 밀리초 단위로 구할 수 있다.
var start = new Date(); /* 실행 시간을 측정할 코드를 작성하는 위치 */ var end = new Date(); var elapsed = end - start; // 프로그램 실행에 걸리는 시간(밀리초 단위) // 이 코드는 '모던 자바스크립트 입문(徹底マス夕一JavaScriptの敎科書)'에서 인용한 것입니다. // [ISBN #978-4797388640]. Copyright 2017 by 磯博
다음은 Date 객체가 제공하는 주요 메서드. 날짜와 시간을 다룰 때 유용하게 사용할 수 있다.
[wptb id=2202][3] Function 생성자
Function은 함수를 생성하는 내장 생성자
var square = new Function("x", "return x * x");
여기서 첫 번째 인자인 “x”는 인수의 이름을 뜻하는 문자열이고, 두 번째 인수는 함수 몸통(function body)이 작성된 문자열. 일반적으로 인수가 n개 일 때는 다음과 같이 사용한다.
var 변수 이름 = new Function(첫 번째 인수, …, n 번째 인수, 함수 몸통);
단점
- Function 생성자로 생성한 함수는 전역 변수와 자신의 지역 변수만 읽고 쓸 수 있다. 그래서 함수를 동적으로 생성해야 하는 특별한 상황 외에는 사용하지 않는다.
- 악의를 품은 사용자가 입력한 문자열을 Function 생성자의 인수인 ‘함수 몸통’으로 전달하면 악성 코드가 실행되어 보안 문제가 발생할 수 있다.
Function 생성자는 함수를 생성하는 기능보다 함수 리터럴에 래퍼 객체를 제공한다는 점에 의미를 둘 수 있다.
[4] 기타 내장 객체
다음은 내장 생성자가 생성하지는 않지만 기본적으로 사용할 수 있는 내장 객체
[wptb id=2195][5] 전역 객체
전역 객체는 자바스크립트에서 매우 중요한 객체
전역 객체의 프로퍼티는 프로그램의 어느 위치에서나 사용할 수 있다.
자바스크립트 인터프리터가 시작될 때 혹은 웹브라우저가 새로운 페이지를 읽어 들일 때마다 새로운 전역 객체가 생성되며, 아래 표와 같은 프로퍼티를 갖게 된다.
[wptb id=2200]클라이언트 측 자바스크립트에서는 Window 객체가 전역 객체
Window 객체에는 프로퍼티와 웹부라우저 고유의 다양한 프로퍼티가 추가되어 있다.
웹브라우저의 전역 객체 프로퍼티는 콘솔에서 다음과 같이 입력하여 확인할 수 있다.
console.log(window);
[6] 자바스크립트 객체의 분류
- 네이티브 객체 : ECMAScript 사양에 정의된 객체
- 호스트 객체 : ECMAScript에는 정의되어 있지 않지만 자바스크립트 실행 환경에 정의된 객체가 호스트 객체(host object)
- 사용자 정의 객체 : 사용자가 정의한 자바스크립트 코드를 실행한 결과로 생성된 객체가 사용자 정의 객체
| 네이티브 객체 | 내장 생성자 객체 | Object, String, Number, Boolean, Array, Date, Function, RegExp, Error, Symbol 등 |
| . | 기타 객체 | JSON, Math 등 |
| 호스트 객체 | 브라우저 객체 | Window, Navigator, History, Location, Screen, Document 등 |
| . | DOM 객체 | HTML 요소를 고작하는 개체 |
| . | 기타 객체 | XMLHttpRequest, HTML5의 각종 API 등 |
| 사용자 정의 객체 | . | 자바스크립트 코드를 실행한 결과로 생성된 객체 |
< 참고문헌 >
🔹주 참고문헌 : 모던 자바스크립트 입문 – 이소 히로시 지음, 서재원 옮김
🔹MDN Web Docs



핑백: 블로그 글 정리 - 둥이아빠, 닥터 홍