λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

λ…μ„œ λͺ©λ‘/λͺ¨λ”₯λ‹€ Modern JS Deep Dive

[λͺ¨λ”₯λ‹€] 21μž₯ 빌트인 객체

728x90

πŸš€ 21.1 μžλ°”μŠ€ν¬λ¦½νŠΈ 객체의 λΆ„λ₯˜

 

πŸ“Œ JS의 객체 3가지

1. ν‘œμ€€ 빌트인 객체

- ECMAScript 사양에 μ •μ˜λœ 객체λ₯Ό λ§ν•˜λ©°, μ•± μ „μ—­μ˜ 곡톡 κΈ°λŠ₯을 μ œκ³΅ν•¨. 

- μ‹€ν–‰ ν™˜κ²½μ— 상관없이 μ–Έμ œλ‚˜ μ‚¬μš©ν•  수 있음

2. 호슀트 객체

- μ‹€ν–‰ν™˜κ²½μ—μ„œ μΆ”κ°€ν˜Έ μ œκ³΅λ˜λŠ” 객체 (μœˆλ„μš° - DOM, BOM, Canvas..., NodeJs -고유의 API)

3. μ‚¬μš©μž μ •μ˜ 객체

- κΈ°λ³Έ μ œκ³΅λ˜λŠ” 것이 μ•„λ‹Œ, μ‚¬μš©μžκ°€ 직접 μ •μ˜ν•œ 객체

 

 

 

 

πŸš€ 21.2 ν‘œμ€€ 빌트인 객체

 

JS λŠ” Object, String, Number λ“±λ“± 40μ—¬κ°œμ˜ ν‘œμ€€ 빌트인 객체λ₯Ό μ œκ³΅ν•¨. 

이 쀑 String, Number, Boolean, Function, Array, Date λŠ” μƒμ„±μž ν•¨μˆ˜λ‘œ ν˜ΈμΆœν•΄ μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μžˆλ‹€.

(이 λ•Œ μΈμŠ€ν„΄μŠ€μ˜ ν”„λ‘œν† νƒ€μž… : 빌트인 객체의 prototype ν”„λ‘œνΌν‹°μ— 반영된 κ°μ²΄μž„. 

예λ₯Ό λ“€λ©΄ String μƒμ„±μž ν•¨μˆ˜λ‘œ ν˜ΈμΆœν•΄ μƒμ„±ν•œ String μΈμŠ€ν„΄μŠ€μ˜ ν”„λ‘œν† νƒ€μž…μ€ String.prototype 이닀.

 

ν‘œμ€€ 빌트인 κ°μ²΄λŠ” μΈμŠ€ν„΄μŠ€ 없이도 호좜 κ°€λŠ₯ν•œ 빌트인 정적 λ§€μ„œλ“œλ₯Ό μ œκ³΅ν•¨. 

 

 

 

 

 

 

 

πŸš€ 21.3 μ›μ‹œκ°’κ³Ό 래퍼 객체 

 

μ›μ‹œκ°’μ΄ μžˆλŠ”λ°λ„ λ¬Έμžμ—΄, 숫자, λΆˆλ¦¬μ–Έ 객체λ₯Ό μƒμ„±ν•˜λŠ” ν‘œμ€€ 빌트인 μƒμ„±μž ν•¨μˆ˜κ°€ μ‘΄μž¬ν•˜λŠ” μ΄μœ λŠ”?

 

μ›λž˜λŠ” μ›μ‹œκ°’μ€ 객체가 μ•„λ‹ˆλ―€λ‘œ ν”„λ‘œνΌν‹°λ‚˜ λ©”μ„œλ“œλ₯Ό κ°€μ§ˆ 수 μ—†λŠ”λ°λ„ μ›μ‹œκ°’μΈ λ¬Έμžμ—΄μ΄ 마치 객체처럼 λ™μž‘ν•¨. 

(μ–΄..? κ·ΈλŸ¬λ„€)

const str = 'hello';

console.log(str.length); // 5

 

이유: μ›μ‹œκ°’μ— λŒ€ν•΄ 객체처럼 λ§ˆμΉ¨ν‘œ ν‘œκΈ°λ²•(λ˜λŠ” λŒ€κ΄„ν˜Έ ν‘œκΈ°λ²•)으둜 μ ‘κ·Όν•˜λ©΄,

JS 엔진이 μΌμ‹œμ μœΌλ‘œ μ›μ‹œκ°’μ„ μ—°κ΄€λœ 객체둜 λ³€ν™˜ν•΄μ€Œ. 

=> JS μ—”μ§„λŠ” μ•”λ¬΅μ μœΌλ‘œ μ—°κ΄€λœ 객체λ₯Ό 생성 -> μƒμ„±λœ 객체둜 ν”„λ‘œνΌν‹°μ— μ ‘κ·Όν•˜κ±°λ‚˜ λ©”μ„œλ“œ 호좜 -> λ‹€μ‹œ μ›μ‹œκ°’μœΌλ‘œ 되돌림

 

πŸ“Œ 래퍼 객체

: 이처럼 λ¬Έμžμ—΄, 숫자, λΆˆλ¦¬μ–Έ 값에 λŒ€ν•΄ 객체처럼 μ ‘κ·Όν•˜λ©΄ μƒμ„±λ˜λŠ” μž„μ‹œ 객체λ₯Ό λœ»ν•¨,

 

래퍼 객체의 처리 μ’…λ£Œ -> μ‹λ³„μžκ°€ μ›μ‹œκ°’μ„ 갖도둝 되돌리고, 래퍼 κ°μ²΄λŠ” 가비지 μ»¬λ ‰μ…˜μ˜ λŒ€μƒμ΄ 됨. 

 

null κ³Ό undefined λŠ” 래퍼 객체λ₯Ό μƒμ„±ν•˜μ§€ μ•ŠμŒ. 

 

 

 

 

 

 

πŸš€ 21.4 μ „μ—­ 객체

 

μ „μ—­ 객체

- μ½”λ“œκ°€ μ‹€ν–‰λ˜κΈ° 이전 단계에 JS 엔진에 μ˜ν•΄ μ–΄λ–€ 객체보닀도 λ¨Όμ € μƒμ„±λ˜λŠ” νŠΉμˆ˜ν•œ 객체. 

- μ–΄λ–€ 객체에도 μ†ν•˜μ§€ μ•ŠλŠ” μ΅œμƒμœ„ 객체

- ν™˜κ²½μ— 따라 이름이 μ œκ°κ°μž„. 

λΈŒλΌμš°μ € : window, self, this, frames

Node.js : global

 

πŸ“Œ μ „μ—­ 객체의 νŠΉμ§•

- μ „μ—­κ°μ²΄λŠ” κ°œλ°œμžκ°€ μ˜λ„μ μœΌλ‘œ 생성할 수 μ—†λ‹€. -> μ „μ—­ 객체λ₯Ό 생성할 수 μžˆλŠ” μƒμ„±μž ν•¨μˆ˜κ°€ μ œκ³΅λ˜μ§€ μ•ŠλŠ”λ‹€.

- μ „μ—­ 객체릐 ν”„λ‘œνΌν‹°λ₯Ό μ°Έμ‘°ν•  λ•Œ, window 등을 μƒλž΅ν•  수 μžˆλ‹€.

- Object, String λ“±κ³Ό 같은 λͺ¨λ“  ν‘œμ€€ 빌트인 객체λ₯Ό ν”„λ‘œνΌν‹°λ‘œ κ°–κ³  μžˆλ‹€.

- μ‹€ν–‰ν™˜κ²½μ— 따라 μΆ”κ°€μ μœΌλ‘œ ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œλ₯Ό κ°–λŠ”λ‹€.

(Window: DOM, BOM, .. , Nodejs: 고유의 API)

- var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜ & μ„ μ–Έν•˜μ§€ μ•Šμ€ λ³€μˆ˜μ— 값을 ν• λ‹Ήν•œ 암묡적 μ „μ—­ & μ „μ—­ν•¨μˆ˜ => μ „μ—­ 객체의 ν”„λ‘œνΌν‹°κ°€ 됨. 

- let, const 둜 μ„ μ–Έν•œ λ³€μˆ˜λŠ” μ „μ—­κ°μ²΄μ˜ ν”„λ‘œνΌν‹°κ°€ μ•„λ‹˜. 

- λΈŒλΌμš°μ € ν™˜κ²½μ˜ λͺ¨λ“  JS μ½”λ“œλŠ” ν•˜λ‚˜μ˜ μ „μ—­ 객체 window λ₯Ό κ³΅μœ ν•¨. 

 

 

21.4.1 빌트인 μ „μ—­ ν”„λ‘œνΌν‹°

μ „μ—­ 객체의 ν”„λ‘œνΌν‹°λ₯Ό 의미. 

주둜 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ „μ—­μ—μ„œ μ‚¬μš©ν•˜λŠ” 값을 제곡

 

Infinity 

 

NaN

 

undefined

 

 

 

21.4.2 빌트인 μ „μ—­ ν•¨μˆ˜

μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ „μ—­μ—μ„œ ν˜ΈμΆœν•  수 μžˆλŠ” 빌트인 ν•¨μˆ˜

 

eval

- λ¬Έμžμ—΄μ„ μ½”λ“œλ‘œ λ§Œλ“¦. -> κΈ°μ‘΄ μŠ€μ½”ν”„λ₯Ό λŸ°νƒ€μž„μ— λ™μ μœΌλ‘œ μˆ˜μ •. 

- JS 에 μ˜ν•΄ μ΅œμ ν™”κ°€ μˆ˜ν–‰λ˜μ§€ μ•ŠμŒ -> 느림

=> μ‚¬μš© κΈˆμ§€. 

 

isFinite

- μΈμˆ˜κ°€ 정상적인 μœ ν•œμˆ˜μΈμ§€

 

isNaN

- μΈμˆ˜κ°€ NaN 인지

 

parseFloat

λ¬Έμžμ—΄ 인수λ₯Ό 뢀동 μ†Œμˆ˜μ  숫자, 즉 μ‹€μˆ˜λ‘œ ν•΄μ„ν•˜μ—¬ λ°˜ν™˜

 

pardeInt

- λ¬Έμžμ—΄ -> μ •μˆ˜λ‘œ 해석

 

encodeURI / decodeURI

μ™„μ „ν•œ URI* (Uniform Resource identifier) 을 전달받아 μ΄μŠ€μΌ€μ΄ν”„ 처리λ₯Ό μœ„ν•΄ 인코딩함. 

 

URI & URL을 ν˜Όμš©ν•΄μ„œ μ‚¬μš©ν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€. λŒ€λΆ€λΆ„μ˜ 경우 λ¬Έμ œκ°€ μ—†μ§€λ§Œ μ •ν™•ν•˜κ²Œ 이 λ‘˜μ˜ 차이점이 μ‘΄μž¬ν•œλ‹€. κ·ΈλŸ¬λ―€λ‘œ 각 μš©μ–΄μ˜ μ •μ˜μ™€ μš©λ„μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³Έλ‹€.

URI
URIλŠ” νŠΉμ • λ¦¬μ†ŒμŠ€λ₯Ό μ‹λ³„ν•˜λŠ” ν†΅ν•© μžμ› μ‹λ³„μž(Uniform Resource Identifier)λ₯Ό μ˜λ―Έν•œλ‹€.
μ›Ή κΈ°μˆ μ—μ„œ μ‚¬μš©ν•˜λŠ” 논리적 λ˜λŠ” 물리적 λ¦¬μ†ŒμŠ€λ₯Ό μ‹λ³„ν•˜λŠ” κ³ μœ ν•œ λ¬Έμžμ—΄ μ‹œν€€μŠ€λ‹€.

URL
URL은 ν”νžˆ μ›Ή μ£Όμ†ŒλΌκ³ λ„ ν•˜λ©°, 컴퓨터 λ„€νŠΈμ›Œν¬ μƒμ—μ„œ λ¦¬μ†ŒμŠ€κ°€ μ–΄λ”” μžˆλŠ”μ§€ μ•Œλ €μ£ΌκΈ° μœ„ν•œ κ·œμ•½μ΄λ‹€.
URI의 μ„œλΈŒμ…‹μ΄λ‹€.

비둝 URL은 URI의 μ„œλΈŒμ…‹μ΄μ§€λ§Œ URI와 URL의 κ°€μž₯ 큰 차이점은 λ°”λ‘œ μ•„λž˜μ™€ κ°™λ‹€

URIλŠ” μ‹λ³„ν•˜κ³ , URL은 μœ„μΉ˜λ₯Ό κ°€λ₯΄ν‚¨λ‹€.

 

 

 

 

μ΄μŠ€μΌ€μ΄ν”„ 처리

- λ„€νŠΈμ›Œν¬λ₯Ό 톡해 정보λ₯Ό κ³΅μœ ν•  λ•Œ, μ–΄λ–€ μ‹œμŠ€ν…œμ—μ„œλ„ 읽을 수 μžˆλŠ” μ•„μŠ€ν‚€ 문자 μ…‹μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 것

 

인코딩

- URL 의 λ¬Έμžλ“€μ„ μ΄μŠ€μΌ€μ΄ν”„ μ²˜λ¦¬ν•˜λŠ” 것. 

 

 

encodeURIComponent / decodeURIComponent

URI κ΅¬μ„±μš”μ†Œλ₯Ό 인수둜 전달 λ°›μ•„ 인코딩함. 

 

 

21.4.3 암묡적 μ „μ—­

μ„ μ–Έν•˜μ§€ μ•Šμ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ JS 엔진에 μ˜ν•΄ μ „μ—­ 객체의 ν”„λ‘œνΌν‹°κ°€ λ˜μ–΄ μ „μ—­ λ³€μˆ˜μ²˜λŸΌ λ™μž‘ν•˜λŠ” ν˜„μƒ

-> ν•˜μ§€λ§Œ λ³€μˆ˜λŠ” μ•„λ‹˜. ν”„λ‘œνΌν‹°μ΄κΈ° λ•Œλ¬Έμ— λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…μ΄ μΌμ–΄λ‚˜μ§€ μ•ŠμŒ. 

-> delete 둜 μ‚­μ œ κ°€λŠ₯. 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
λ°˜μ‘ν˜•