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

πŸ“š/γ„΄ JavaScript

(13)
[JavaScript] ν”„λ‘œν† νƒ€μž…(prototype) μ΄λž€ 클래슀(class)λŠ” 객체지ν–₯μ–Έμ–΄μ—μ„œ 빠질 수 μ—†λŠ” κ°œλ…μ΄λ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλ„ 객체지ν–₯언어이닀. ν•˜μ§€λ§Œ μžλ°”μŠ€ν¬λ¦½νŠΈμ—λŠ” ν΄λž˜μŠ€κ°€ μ—†λ‹€. λŒ€μ‹  ν”„λ‘œν† νƒ€μž…μ΄λΌλŠ” 것이 μ‘΄μž¬ν•œλ‹€. 이것이 μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ 'ν”„λ‘œν† νƒ€μž… 기반 μ–Έμ–΄'라고 λΆˆλ¦¬λŠ” μ΄μœ μ΄λ‹€. πŸ”— ν”„λ‘œν† νƒ€μž…(prototype) ν”„λ‘œν† νƒ€μž…μœΌλ‘œ 클래슀 κ΅¬ν˜„μ΄ κ°€λŠ₯ν•˜λ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” ν”„λ‘œν† νƒ€μž…μ„ 기반으둜 상속을 κ΅¬ν˜„ν•˜μ—¬ 기쑴의 μ½”λ“œλ₯Ό μž¬μ‚¬μš©ν•¨μœΌλ‘œμ¨ λΆˆν•„μš”ν•œ 쀑볡을 μ œκ±°ν•œλ‹€. μƒμ„±μžλ₯Ό μ΄μš©ν•˜μ—¬ 클래슀처럼 μ‚¬μš©ν•  μˆ˜λŠ” μžˆμ§€λ§Œ λŒ€λΆ€λΆ„μ˜ 경우 같은 ν˜ΈμΆœμ„ λ°˜λ³΅ν•œλ‹€λ˜κ°€μ˜ λΆˆν•„μš”ν•œ 행동이 λ°˜λ³΅λ˜μ–΄ 효율적인 μ½”λ“œκ°€ λ˜μ§€ λͺ»ν•œλ‹€. κ·Έλž˜μ„œ ν”„λ‘œν† νƒ€μž…μ΄λΌλŠ” 빈 객체에 미리 값듀을 담아두고 μƒˆλ‘œ μƒμ„±ν•œ κ°μ²΄λŠ” κ·Έ ν”„λ‘œν† νƒ€μž…μ˜ 값을 κ°€μ Έμ˜€λŠ” 방식을 κ°–μΆ°μ„œ 클래슀의 ν™œμš©μ²˜λŸΌ μž¬μ‚¬μš©μ„ ..
[JavaScript] Axios μ‚¬μš©ν•˜μ—¬ μ›Ήμ„œλ²„μ™€ ν†΅μ‹ ν•˜κΈ° πŸ”½ AJAX, HTTP에 λŒ€ν•΄μ„œλŠ” μ•„λž˜ 포슀트λ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš” πŸ”½ [JavaScript / 비동기 처리] AJAX / Callback, Promise, async, await πŸ“Œ 동기(Synchronous) ν”„λ‘œκ·Έλž˜λ° vs 비동기(Asynchronous) ν”„λ‘œκ·Έλž˜λ° 동기 ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ“œκ°€ λ°˜λ“œμ‹œ μž‘μ„±λœ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰λ˜λŠ” 방식이닀. 비동기 ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ“œμ˜ μ²˜λ¦¬κ°€ μ™„λ£Œλ  λ•ŒκΉŒ devjindev.tistory.com [HTTP] APIλž€? REST(RESTful) APIλž€? πŸ”— API(Application Programing Interface)λž€? μ‘μš© ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘, 운영 μ²΄μ œλ‚˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯을 μ œμ–΄ν•  수 있게 λ§Œλ“  μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ˜λ―Έν•œλ‹€. πŸ”— REST(RESTful) A..
[JavaScript] AJAX / XMLHttpRequest, axios, fecth πŸ”— AJAXλž€? μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•œ 비동기 톡신이며, ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°„μ˜ XML 데이터λ₯Ό μ£Όκ³ λ°›λŠ” κΈ°μˆ μ΄λ‹€. XMLHttpRequest 객체λ₯Ό μ΄μš©ν•΄μ„œ 전체 νŽ˜μ΄μ§€λ₯Ό λ¦¬λ‘œλ“œν•˜μ§€ μ•Šκ³  ν•„μš”ν•œ λ°μ΄ν„°λ§Œ λ‘œλ“œν•  수 μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€. [JavaScript / 비동기 처리] AJAX / Callback, Promise, async, await πŸ“Œ 동기(Synchronous) ν”„λ‘œκ·Έλž˜λ° vs 비동기(Asynchronous) ν”„λ‘œκ·Έλž˜λ° 동기 ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ“œκ°€ λ°˜λ“œμ‹œ μž‘μ„±λœ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰λ˜λŠ” 방식이닀. 비동기 ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ“œμ˜ μ²˜λ¦¬κ°€ μ™„λ£Œλ  λ•ŒκΉŒ devjindev.tistory.com πŸ”— XMLHttpRequest AJAXλŠ” λ‹€μ–‘ν•œ 라이브러리λ₯Ό 가지고 μžˆλŠ”λ°, 이 λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ€ λͺ¨λ‘ XMLHttpReques..
[JavaScript] thisλž€? / call, apply, bind 차이점 πŸ”— thisλž€? thisλŠ” ν•¨μˆ˜ 호좜 방식에 따라 this에 바인딩할 객체가 λ™μ μœΌλ‘œ κ²°μ •λœλ‹€. (μ˜ˆμ™Έμ μœΌλ‘œ, bind ν•¨μˆ˜λŠ” 호좜과 λ¬΄κ΄€μ—κ²Œ λ¬Άμ–΄μ„œ κ³ μ •μ‹œν‚¬ 수 μžˆλ‹€.) ν˜ΈμΆœν•œ 객체 === this πŸ”— ν•¨μˆ˜ 호좜 방식 1. ν•¨μˆ˜(μΌλ°˜ν•¨μˆ˜, μ „μ—­ν•¨μˆ˜, μ™ΈλΆ€ν•¨μˆ˜, λ‚΄λΆ€ν•¨μˆ˜(일반 λ‚΄λΆ€ν•¨μˆ˜, λ©”μ†Œλ“œμ˜ λ‚΄λΆ€ν•¨μˆ˜, μ½œλ°±ν•¨μˆ˜ λ“±)) 호좜 thisλŠ” 전역객체(window)λ₯Ό 가리킨닀. 2. λ©”μ†Œλ“œ 호좜 thisλŠ” ν•΄λ‹Ή λ©”μ†Œλ“œμ˜ 객체λ₯Ό 가리킨닀. 3. μƒμ„±μž ν•¨μˆ˜ 호좜 thisλŠ” μƒμ„±μžλ‘œ 인해 μƒμ„±λœ μΈμŠ€ν„΄μŠ€λ₯Ό 가리킨닀. 4. call, apply, bind 호좜 thisκ°€ ν•¨μˆ˜ ν˜ΈμΆœμ‹μ— 따라 객체λ₯Ό 가리킨닀면 call, apply, bindλŠ” ν•¨μˆ˜κ°€ 직접 μ‹€ν–‰λ¬Έλ§₯을 κ²°μ •ν•œλ‹€. call은 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•΄ μ‹€ν–‰ν•œλ‹€. ν•¨μˆ˜..
[JavaScript] ν΄λ‘œμ €(Closure)λž€? πŸ”— ν΄λ‘œμ €(Closure)λž€? 일반적인 ν•¨μˆ˜μ˜ 경우 ν•¨μˆ˜ ν˜ΈμΆœμ— μ˜ν•΄ ν•¨μˆ˜ λ‚΄λΆ€μ˜ 싀행ꡬ문을 λͺ¨λ‘ μ‹€ν–‰ν•˜κ²Œ 되면 ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ λ§Œλ“  지역 λ³€μˆ˜κ°€ μžλ™μœΌλ‘œ μ‚¬λΌμ§€μ§€λ§Œ, μ–΄λ–€ κ²½μš°μ—λŠ” 사라지지 μ•Šκ³  λ‚¨λŠ” κ²½μš°κ°€ μžˆλŠ”λ° μ΄λŸ¬ν•œ ν˜„μƒμ„ ν΄λ‘œμ €λΌκ³  ν•œλ‹€. ν΄λ‘œμ €λŠ” μžλ°” μŠ€ν¬λ¦½νŠΈμ—μ„œ 쀑첩 ν•¨μˆ˜μ™€ 비동기 방식을 μ‚¬μš©ν•˜μ—¬ κ°€λŠ₯ν•œλ°, 호좜된 ν•¨μˆ˜ λ‚΄μ—μ„œ μ™ΈλΆ€λ‘œ μ΄λ™ν•˜λŠ” λ³€μˆ˜κ°€ 있으면 ν΄λ‘œμ € ν•¨μˆ˜κ°€ λ™μž‘ν•œλ‹€. 1 2 3 4 5 6 7 8 9 10 11 12 13 // ν•¨μˆ˜ μ„ μ–Έ function createCount(){ var count = 0; // λ³€μˆ˜ μ„ μ–Έ // 3 β˜…λ³€μˆ˜κ°€ 사라지지 μ•Šκ³  λ‚¨μŒ 🧟‍β™€οΈβ˜… // 쀑첩 ν•¨μˆ˜ // 4 λ‹€μ‹œ 살아남 function addCount(){ count++; // 처리 return..
[JavaScript] ν˜Έμ΄μŠ€νŒ…(Hoisting) μ΄λž€? πŸ”— ν˜Έμ΄μŠ€νŒ…(Hoisting)μ΄λž€? λ³€μˆ˜ λ˜λŠ” ν•¨μˆ˜ μ„ μ–Έ 뢀뢄이 μ΅œμƒλ‹¨μœΌλ‘œ λŒμ–΄ μ˜¬λ €μ§€λŠ” ν˜„μƒμ„ μ˜λ―Έν•œλ‹€. λ³€μˆ˜κ°€ 있으면 μœ„μΉ˜μ— 상관없이 μ΅œμƒλ‹¨μ—μ„œ undefined된 ν˜•νƒœλ‘œ μ‘΄μž¬ν•œλ‹€. ⭐ 주의 var λ³€μˆ˜ μ„ μ–Έκ³Ό ν•¨μˆ˜ μ„ μ–Έλ¬Έμ—μ„œλ§Œ ν˜Έμ΄μŠ€νŒ…μ΄ μΌμ–΄λ‚œλ‹€. (let/const λ³€μˆ˜ μ„ μ–Έ, ν•¨μˆ˜ ν‘œν˜„μ‹μ—μ„œλŠ” λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.) 12345console.log(a); // undefined 좜λ ₯console.log(b); // error var a = 'hello';const b = 'hello2';cs 12345678910func1(); // hello 좜λ ₯func2(); // error function func1() { // ν•¨μˆ˜μ„ μ–Έλ¬Έ console.log("hello");} var func2 = functi..
[JavaScript] μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ(Execution Context)λž€? πŸ”— μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ(Execution Context) λž€? μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλŠ” μ‹€ν–‰ κ°€λŠ₯ν•œ μ½”λ“œκ°€ μ‹€ν–‰λ˜κΈ° μœ„ν•΄ ν•„μš”ν•œ ν™˜κ²½μ΄λ‹€. πŸ”— μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ˜ μ’…λ₯˜ πŸ“ μ „μ—­ μ»¨ν…μŠ€νŠΈ (Global Context) μ „μ—­ μ˜μ—­μ— μ‘΄μž¬ν•˜λŠ” μ½”λ“œμ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ 생성이 되면, μŠ€νƒμ— μŒ“μΈλ‹€. μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ’…λ£Œλ  λ•Œ(μ›Ή νŽ˜μ΄μ§€μ—μ„œ λ‚˜κ°€κ±°λ‚˜ λΈŒλΌμš°μ €λ₯Ό 닫을 λ•Œ) μ†Œλ©Έλœλ‹€. windowκ°€ this둜 ν• λ‹Ήλœλ‹€. πŸ“ ν•¨μˆ˜ μ»¨ν…μŠ€νŠΈ (Function Context) ν•¨μˆ˜ 내에 μ‘΄μž¬ν•˜λŠ” μ½”λ“œμ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μ„ μ–Έλœ ν•¨μˆ˜κ°€ 호좜이 될 λ•Œ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ 생성이 되고, μŠ€νƒμ— μŒ“μΈλ‹€. ν•¨μˆ˜μ˜ λͺ¨λ“  λ™μž‘(μ‹€ν–‰)이 μ™„λ£Œλ˜λ©΄, ν•¨μˆ˜ μ»¨ν…μŠ€νŠΈλŠ” μ†Œλ©Έλœλ‹€. (ν΄λ‘œμ € μ‚¬μš©ν•˜λ©΄ μ†Œλ©ΈX) πŸ”— μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ˜ 객체 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλŠ” μ‹€ν–‰ κ°€..
[JavaScript / 비동기 처리] AJAX / Callback, Promise, async, await πŸ“Œ 동기(Synchronous) ν”„λ‘œκ·Έλž˜λ° vs 비동기(Asynchronous) ν”„λ‘œκ·Έλž˜λ° 동기 ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ“œκ°€ λ°˜λ“œμ‹œ μž‘μ„±λœ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰λ˜λŠ” 방식이닀. 비동기 ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ“œμ˜ μ²˜λ¦¬κ°€ μ™„λ£Œλ  λ•ŒκΉŒμ§€ 기닀리지 μ•Šκ³  λ‹€λ₯Έ μ½”λ“œλ₯Ό μ²˜λ¦¬ν•˜λŠ” 방식이닀. πŸ”— 비동기 처리 사둀 > AJAX μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•œ 비동기 톡신이며, ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°„μ˜ XML 데이터λ₯Ό μ£Όκ³ λ°›λŠ” κΈ°μˆ μ΄λ‹€. XMLHttpRequest 객체λ₯Ό μ΄μš©ν•΄μ„œ 전체 νŽ˜μ΄μ§€λ₯Ό λ¦¬λ‘œλ“œν•˜μ§€ μ•Šκ³  ν•„μš”ν•œ λ°μ΄ν„°λ§Œ λ‘œλ“œν•  수 μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€. πŸ”— 비동기 처리 방법 β‘  > 콜백(Callback) ν•¨μˆ˜ ν•¨μˆ˜ μ‹€ν–‰ 결과값을 리턴이 μ•„λ‹Œ λ§€κ°œλ³€μˆ˜λ‘œ λ„˜μ–΄μ˜¨ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ λ„˜κ²¨μ£ΌλŠ” 방식이닀. πŸ”— 콜백 ν•¨μˆ˜ μ‚¬μš©ν•˜λŠ” 이유 νŠΉμ • 둜직이 끝났을 λ•Œ μ›ν•˜λŠ” λ™μž‘..