🐟 생성자로 객체 생성
생성자
라고 하는 함수로 객체를 생성 가능붕어빵 틀
에 비유할 수 있다.생성자 예시
// 객체를 생성하는 생성자 함수 function Card (shape, rank) { this.shape = shape; this.rank = rank; } // 생성자로 객체를 생성한 함수 ➡ new 연산자 사용 let card = new Card ("diamond", "A"); // shape 프로퍼티에는 "diamond" , rank 프로퍼티에는 "A" 라는 값이 저장된 객체가 생성 // 이 객체의 참조가 변수 card에 할당됨 console.log(card); // Card {shape: "diamond", rank: "A"}
🐟 생성자
this.프로퍼티이름
에 값을 대입하면, 그 이름을 가진 프로퍼티에 값이 할당된 객체 생성 ❗❗❗인스턴스
🚫 인스턴스(instance): 클래스(객체를 실체로 만들기 위한 설계도)로 생성한 실체
자바스크립트에는 클래스가 없으므로, 생성자 자체가 함수 객체라는 실체가 된다.🚫 즉, 자바스크립트 생성자로 생성한 객체는 엄밀히 인스턴스가 아니다. 다만 생성자가 클래스처럼 객체를 생성하는 역할을 담당하므로, 생성자로 생성한 객체도 인스턴스라고 부르는 것이 관례이다.
🐟 생성자의 역할
// ex) 좌푯값과 속도 벡터를 가진 좌표평면위의 파티클을 표현하는 객체 function Particle(x, y, vx, vy) { this.x = x; this.y = y; this.vx = vx; this.vy = vy; this.velocity = Math.sqrt(vx * vx + vy * vy); } let p = new Particle(0, 0, 3, 4); console.log(p); // Particle {x:0, y:0, vx:3, vy:4, velocity:5}
🐟 메서드
를 가진 객체를 생성하는 생성자
this.프로퍼티이름
에 함수의 참조를 대입하면 메서드 정의 가능 ✨this
는 생성될 인스턴스를 가리킴// ex) function Circle(center, radius) { this.center = center; this.radius = radius; this.area = function(){ return Math.PI * this.radius * this.radius; } } let p = {x:0, y:0}; let c = new Circle(p, 2.0); console.log("넓이 = " + c.area()); // 넓이 = 12.5663\0614359172 ❗ 메서드 함수 안에서 this를 사용하면 그 값이 인스턴스의 프로퍼티임을 명시할 수 있음
뼈대
구성내장 객체
(빌트인 오브젝트, built in Object)가 존재🐠 내장 생성자
ECMAScript 5 의 주요 내장 생성자
Object
: 일반 객체
String
: 문자열 객체
Number
: 숫자 객체
Boolean
: 논리값 객체
Array
: 배열
Date
: 날짜와 시간을 다루는 객체
Function
: 함수 객체
RegExp
: 정규 표현식 객체
Error
: 오류 객체
EvalError
: eval()함수와 관련된 오류를 표현하는 객체
InternalError
: 자바스크립트 내부에서 발생한 오류를 표현하는 객체
RangeError
: 값이 허용 범위를 넘었을 때 발생한 오류를 표현하는 객체
ReferenceError
: 없는 변수를 참조할 떄 발생한 오류를 표현하는 객체
SyntaxError
: 문법이 어긋날 떄 발생한 오류를 표현하는 객체
TypeError
: 값이 기대한 타입이 아닐 때 발생한 오류를 표현하는 객체
URIError
: 잘못된 URI를 만났을 때 발생한 오류를 표현하는 객체
ECMAScript 5 의 주요 내장 생성자
Symbol
: 심벌을 생성
Int8Array8
: 부호가 있는 8비트 정수 배열을 생성
Uint8Array8
: 부호가 없는 8비트 정수 배열을 생성
Int16Array16
: 부호가 있는 16비트 정수 배열을 생성
Uint16Array16
: 부호가 없는 16비트 정수 배열을 생성
Int32Array32
: 부호가 있는 32비트 정수 배열을 생성
Uint32Array32
: 부호가 없는 32비트 정수 배열을 생성
Float32Array32
: 32비트 부동소수점 배열을 생성
Float64Array64
: 64비트 부동소수점 배열을 생성
ArrayBuffer
: 고정 길이 이진 데이터 버퍼를 생성
DataView
: ArrayBuffer 데이터를 읽고 쓸 수 있는 수단을 제공
Promise
: 처리 지연 및 비동기 처리를 관리하는 수단을 제공
Generator
: 제너레이터 함수를 다룰 수 있는 수단을 제공
GeneratorFunction
: 제너레이터 함수를 생성
Proxy
: 객체의 기본적인 동작을 재정의하는 기능을 제공
Map
: key/value 맵을 생성
Set
: 중복을 허용하지 않는 데이터 집합을 생성
WeakMap
: 약한 참조를 유지하는 key/value 맵을 생성
WeakSet
: 약한 참조를 유지하는 고유한 데이터 집합을 생성
🐠 Date 생성자
let date = new Date(); // 실행한 시점의 날짜와 시간 정보를 담은 객체 생성 // 객체의 참조를 변수 date에 담음
Date 객체의 주요 메서드
now.getFullYear()
: 연도 숫자값 (ex. 2021)
now.getMonth()
: 월 숫자값 (❗ 0부터 시작. 1월은 0, 2월은 1, 2월은 3... )
now.getDate()
: 날짜 숫자값
now.getDay()
: 요일 숫자값 (❗ 0(일요일)부터 시작. 월요일은 1, 화요일은 2, 수요일은 3... )
now.getHours()
: 시각의 시간 숫자값
now.getMinutes()
: 시각의 분 숫자값
now.getSeconds()
: 시각의 초 숫자값
now.getMilliseconds()
: 시각의 밀리초 숫자값
now.toString()
: 객체를 실행한 시점의 날짜와 시간 정보를 문자열 형태로 나타내기
ex. "Tus Feb 23 2021 12:20:31 GMT+0900 (한국 표준시)"
now.toLocaleString()
: 지역화된 시간과 날짜 정보
now.toLocaleDateString()
: 지역화된 날짜 정보
now.toLocaleTIimeString()
: 지역화된 시간과 정보
🐠 Function 생상자
let a = new Function("x", "return x*x"); // 첫 번째 인자("x")는 인수의 이름을 뜻하는 문자열 // 두 번째 인자("return x*x")는 함수 body가 작성될 문자열
❗ 일반적으로, 인수가 n개일 때
➡let 변수이름 = new Function(첫번째 인수, ... n번째 인수, 함수body}
🐠 기타 내장 객체
전역객체
: 프로그램 어디에서나 사용 가능한 각체
JSON
: JSON을 처리하는 기능 제공
Math
: 수학적 함수와 상수를 제공
Reflect
: 프로그램의 흐름을 가로채는 기능을 제공
🐠 전역 객체
전역 프로퍼티
: undefined, NaN, Infinity
생성자
: Object(), String(), Number() ...
전역 함수
: parseInt(), parseFloat(), isNaN()...
내장 객체
: Math, m JSON, Reflect❗ 클라이언트 측 자바스크립트 에서는 window 객체가 전역 객체이다