๐ฐ ์ธ์ด/JS (15) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ Ajax ์ฑ ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋ฐฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ์ ๋๋ค. ๋ชฉ์ฐจ 1. Ajax(Asynchronous JavaScript and XML) 2. JSON (JavaScript Object Notation) 3. XMLHttpRequest 1. Ajax(Asynchronous JavaScript and XML) ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด์ ๋น๋๊ธฐ์ (Asynchronous)์ผ๋ก ์๋ฒ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๋ ํต์ ๋ฐฉ์ ์๋ฒ๋ก๋ถํฐ ์นํ์ด์ง๊ฐ ๋ฐํ๋๋ฉด ํ๋ฉด ์ ์ฒด๋ฅผ ๊ฐฑ์ ํด์ผ ํ๋๋ฐ ํ์ด์ง ์ผ๋ถ๋ง์ ๊ฐฑ์ ํ๊ณ ๋ ๋์ผํ ํจ๊ณผ๋ฅผ ๋ณผ ์ ์๋๋ก ํ๋ ๊ฒ์ด Ajax์ด๋ค. ํ์ด์ง ์ ์ฒด๋ฅผ ๋ก๋ํ์ฌ ๋ ๋๋งํ ํ์๊ฐ ์๊ณ ๊ฐฑ์ ์ด ํ์ํ ์ผ๋ถ๋ง ๋ก๋ํ์ฌ ๊ฐฑ์ ํ๋ฉด ๋๋ฏ๋ก ๋น ๋ฅธ ํผํฌ๋จผ์ค์ ๋ถ๋๋ฌ์ด ํ๋ฉด ํ์ ํจ๊ณผ๋ฅผ ๊ธฐ๋ํ ์ ์๋ค. 2. JS.. ์ด๋ฒคํธ ์ฑ ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋ฐฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ์ ๋๋ค. ๋ชฉ์ฐจ 1. ์ด๋ฒคํธ 2. ์ด๋ฒคํธ ๋ฃจํ(Event Loop)์ ๋์์ฑ(Concurrency) 2-1) ๋ธ๋ผ์ฐ์ ํ๊ฒฝ 2-2) ์ด๋ฒคํธ ์์ 3. ์ด๋ฒคํธ์ ์ข ๋ฅ(์์ฃผ ์ฌ์ฉ๋๋ ์ด๋ฒคํธ) ๋ ๋ค์ํ ์ด๋ฒคํธ๋ฅผ ์๊ณ ์ถ๋ค๋ฉด ์๋์ MDN์ฌ์ดํธ๋ฅผ ์ฐธ๊ณ ํ๋ค. https://developer.mozilla.org/en-US/docs/Web/Events 1. ์ด๋ฒคํธ ์ด๋ฒคํธ(event)๋ DOM ์์์ ๊ด๋ จ๋ ์ด๋ค ์ฌ๊ฑด์ ์๋ฏธํ๋ค. ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ๋๊ตฐ๊ฐ ์ด๋ฅผ ๊ฐ์งํ ์ ์์ด์ผ ํ๋ฉฐ ๊ทธ์ ๋์ํ๋ ์ฒ๋ฆฌ๋ฅผ ํธ์ถํด ์ฃผ์ด์ผ ํ๋ค. ๋ธ๋ผ์ฐ์ ๋ ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ ์ ์์ผ๋ฉฐ ์ด๋ฒคํธ ๋ฐ์ ์์๋ ํต์งํด ์ค๋ค. ์ด ๊ณผ์ ์ ํตํด ์ฌ์ฉ์์ ์นํ์ด์ง๋ ์ํธ์์ฉ(Interaction)์ด ๊ฐ๋ฅํ๊ฒ ๋๋ค... ๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ(2) - DOM ์์ ์ ๊ทผ, ์กฐ์ ์ฑ ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋ฐฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ์ ๋๋ค. ๋ชฉ์ฐจ 1. DOM ์์์ ์ ๊ทผ 1-1) get๋ฉ์๋๋ฅผ ์ด์ฉ 1-2) DOM์์ ์ฟผ๋ฆฌ 1-3) DOM Traversing(ํ์) 2. DOM ์์ ์กฐ์ 2-1) ํ ์คํธ ๋ ธ๋์์ ์ ๊ทผ/์์ 2-2) ์ดํธ๋ฆฌ๋ทฐํธ ๋ ธ๋์์ ์ ๊ทผ/์์ 2-3) HTML ์ฝํ ์ธ ์กฐ์(Manipulation) 2-4) DOM์ ์ง์ ์กฐ์ โป innerHTML vs. DOM ์กฐ์ ๋ฐฉ์ DOM์ ํตํด ์นํ์ด์ง๋ฅผ ์กฐ์(manipulate)ํ๊ธฐ ์ํด์๋ ํ์๊ณผ ์กฐ์ ๊ณผ์ ์ด ํ์ํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด๊ฒ์ ํ์ํ ์๋จ(API)์ ์ ๊ณตํ๋ค. ์กฐ์ํ๊ณ ์ํ๋ ์์๋ฅผ ์ ํ ๋๋ ํ์ ์ ํ๋ ์์์ ์ฝํ ์ธ ๋๋ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ์กฐ์ 1. DOM ์์์ ์ ๊ทผ DOM์์๋ฅผ ํ์์๋ ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ ์ธ๊ฐ์ง๊ฐ ์๋ค.. ๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ(1) - ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ DOM ์ฑ ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋ฐฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ์ ๋๋ค. ๋ชฉ์ฐจ 1. ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(DOM, document object model) 2. DOM API(Application Programming Interface) 3. DOM tree 3-1) DOM tree๋ฅผ ๊ตฌ์ฑํ๋ ๋ค์ข ๋ฅ ๋ ธ๋ 1. ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(DOM, document object model) - HTML๋ฌธ์๋ฅผ ์กฐ์ํ๋ ํต์ฌ ํ ์คํธ ํ์ผ๋ก ๋ง๋ค์ด์ ธ ์๋ ์น ๋ฌธ์๋ฅผ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋งํ๋ ค๋ฉด ์น ๋ฌธ์๋ฅผ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ๊ตฌ์กฐ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ผ ํ๋ค. ๋ชจ๋ ์์์ ์์์ ์ดํธ๋ฆฌ๋ทฐํธ, ํ ์คํธ๋ฅผ ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ก ๋ง๋ค๊ณ ์ด๋ค ๊ฐ์ฒด๋ฅผ ๋ถ์ ๊ด๊ณ๋ฅผ ํํํ ์ ์๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑํ ๊ฒ DOM์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ ๋ณ๊ฒฝ๋ DOM์ ๋ ๋.. ์ ๊ท ํํ์ ์ฑ ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋ฐฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ์ ๋๋ค. ๋ชฉ์ฐจ 1. ์ ๊ท ํํ์์ ์ฌ์ฉํ๋ ์ด์ ? 2. ์ ๊ท ํํ์ ๋ง๋ค๊ธฐ 3. ์ ๊ท์ ํจํด 3-1) ํจํด ์์ฑํ๊ธฐ ์ ๊ท์ ํํ์(๋๋ณด๊ธฐ ํด๋ฆญ! : ํน์ ๋ฌธ์ ์ฌ์ฉ ์์) ์์ฃผ ์ฌ์ฉ๋๋ ํน์ ๋ฌธ์(๋๋ณด๊ธฐ ํด๋ฆญ! : ๊ธฐํ ํน์ ๋ฌธ์) 4. ๊ทธ๋ฃน 4-1) ๊ทธ๋ฃนํ 4-2) ์บก์ฒ(capturing) ์ ๊ทํํ์ ํ ์คํธ ์ฌ์ดํธ ๋ด์ฉ์ ์ดํดํ๋ฉด์ ์ค์ ๋ก ์ ์ฉํด ๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋์ ์ฌ์ดํธ๋ค์ ์ด์ฉํ์ฌ ์ ๊ท์์ ํ ์คํธํด ๋ด ์๋ค. ๋จ, ๊ฐ ์ฌ์ดํธ์ ์ค์ ๋ ํ๊ฒฝ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ์๋ํ์ง ์๊ฑฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ค๋ฃจ๋ ์ ๊ท์๊ณผ ๋ค๋ฅด๊ฒ ์๋ํ ์ ์์ผ๋ฏ๋ก ์ฌ์ดํธ์์ ํ ์คํธํ ์ ๊ท์์ ๊ฒฐ๊ณผ๋ฅผ ๋งน์ ํ์ง ๋ง๊ณ ์์ ์ ํ๊ฒฝ์ ๋ง๋์ง ๊ผญ ํ ์คํธํ์ธ์. https://regex101.c.. ๋น๋๊ธฐ์ ํ๋ก๊ทธ๋๋ฐ(1) - ๋๊ธฐvs๋น๋๊ธฐ, ์ฝ๋ฐฑ ์ฑ ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋ฐฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ์ ๋๋ค. ๋ชฉ์ฐจ 1. ์๋ฐ์คํฌ๋ฆฝํธ์ ๋น๋๊ธฐ์ ํ๋ก๊ทธ๋๋ฐ 2. ์ฝ๋ฐฑ 2-1) ์ค์ฝํ์ ๋น๋๊ธฐ์ ์คํ 2-2) ์ค๋ฅ ์ฐ์ ์ฝ๋ฐฑ 2-3) ์ฝ๋ฐฑ ํฌ ๋๊ธฐ์ ์ฒ๋ฆฌ ๋ชจ๋ธ(Synchronous processing model)์ ์ง๋ ฌ์ ์ผ๋ก ํ์คํฌ(task)๋ฅผ ์ํํ๋ค. ์ฆ, ํ์คํฌ๋ ์์ฐจ์ ์ผ๋ก ์คํ๋๋ฉฐ ์ด๋ค ์์ ์ด ์ํ ์ค์ด๋ฉด ๋ค์ ์์ ์ ๋๊ธฐํ๊ฒ ๋๋ค. ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ณ ๋ฐ์ดํฐ๊ฐ ์๋ต๋ ๋๊น์ง ์ดํ ํ์คํฌ๋ค์ ๋ธ๋กํน(blocking, ์์ ์ค๋จ)๋๋ค. #๋๊ธฐ์์ผ๋ก ๋์ - ์์ฐจ์ ์ผ๋ก ์คํ๋จ. function func1() { console.log('func1'); func2(); } function func2() { console.log('func2'); func3(); }.. ES6์ ์ฌ๋ณผ, ์ดํฐ๋ ์ดํฐ์ ์ ๋ค๋ ์ดํฐ ์ฑ ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋ฐฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ์ ๋๋ค. ๋ชฉ์ฐจ 1. Symbol 2. ์ฌ๋ณผ์ ์์ฑ 2-1) ๋ํ์ ์ธ ์์ฉ์ฌ๋ณผ 1. ์ดํฐ๋ ์ดํฐ(Iteratoe) 1-1) ์ดํฐ๋ ์ด์ ํ๋กํ ์ฝ 2. ์ ๋๋ ์ดํฐ(generator) 1. Symbol ES6์์ ์๋ก ์ ๋ณด์ธ ์์ ํ์ ์ด๋ค. typeof Symbol(); // 'symbol' ๊ฐ์ฒด์ Uniqueํ ์์ฑ์ ๋ง๋ค์ด ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ถฉ๋์ ๋ง๊ธฐ ์ํด Symbol์ด ํ์ํ๋ค. ์๋ ๊ฐ์ฒด์ ์์ฑ ์ด๋ฆ์ ๋ฌธ์์ด๋ก ํํํ๋ค. ๊ทธ๋ฌ๋ ์๋ก ์ถ๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ Array ๊ฐ์ด ๋ฒ์ฉ์ ์ผ๋ก ์ฐ์ด๋ ํ์ ์ ํ์ฅํ๋ค๊ณ ํ์ ๋, ๋ด๊ฐ ํ์ฅํ ๊ฒ๊ณผ ๊ฐ์ ์ด๋ฆ์ผ๋ก ํ์ฅํ๋ค๋ฉด? ์ฌ๋ณผ์ Uniqueํ๊ธฐ ๋๋ฌธ์, description์ด ๊ฐ์๋ ์ถฉ๋ํ์ง ์๋๋ค. ๋ด๊ฐ Array์ ์์ฑ์ ๊ฐฏ.. map๊ณผ set ์ฑ ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋ฐฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ์ ๋๋ค. ๋ชฉ์ฐจ 1. Map 1-1) Map vs Object 2. WeakMap 2-2) WeakMap vs Map 3. Set 1. Map Map ๊ฐ์ฒด๋ ์์์ ์ฝ์ ์์๋๋ก ์์๋ฅผ ์ํํ๋ค. for...of ๋ฐ๋ณต๋ฌธ์ ๊ฐ ์ํ์์ [key, value]๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ ๋ฐํํ๋ค. const u1 = {name : 'jackson'} const u2 = {name : 'olive'} //๋งต ์์ฑ const userRoles = new Map(); //๋งต์ set() ์ฌ์ฉํด ์ฌ์ฉ์ ์ญํ ํ ๋น ###### userRoles.set(u1, 'User') userRoles.set(u2, 'Admin') ###๋๋### userRoles .set(u1, 'User') .se.. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) ์ฑ ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋ฐฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ์ ๋๋ค. ๋ชฉ์ฐจ 1. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ฉ์ด 2. ์๋ฐ์คํฌ๋ฆฝํธ์ ์ธ์ด์ ํน์ง 1. ๊ฐ์ฒด ์์ฑ 2. ํด๋์ค(ES5 vs ES6) ์์ฑ 3. ์ธ์คํด์ค ์์ฑ 4. construnctor(์์ฑ์) 5. ํ๋กํ ํ์ ์ฒด์ธ๊ณผ ๋ฉ์๋ ์ ์ 6. ์์ - ์์ฌ ํด๋์ค ํจํด ์์, ํ๋กํ ํ์ ํจํด ์์ 7. ์บก์ํ, ์ถ์ํ, ๋คํ์ฑ 1. ์๋ฐ์คํฌ๋ฆฝํธ์ ์ธ์ด์ ํน์ง ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ฉํฐ-ํจ๋ฌ๋ค์ ์ธ์ด๋ก ๋ช ๋ นํ(imperative), ํจ์ํ(functional), ํ๋กํ ํ์ ๊ธฐ๋ฐ(prototype-based) ๊ฐ์ฒด์งํฅ ์ธ์ด์ด๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด๋ฏธ ์์ฑ๋ ์ธ์คํด์ค์ ์๋ฃ๊ตฌ์กฐ์ ๊ธฐ๋ฅ์ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ค๋ ํน์ง์ด ์๋ค. ๊ฐ์ฒด ์งํฅ์ ์์, ์บก์ํ(์ ๋ณด ์๋) ๋ฑ์ ๊ฐ๋ ์ ํ๋กํ ํ์ ์ฒด์ธ.. ๊ฐ์ฒด ์งํฅ ์ธ์ด - ํ๋กํ ํ์ ๊ธฐ๋ฐ ์ธ์ด(JS) ์ฑ ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋ฐฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ์ ๋๋ค. ๋ชฉ์ฐจ ํด๋์ค ๊ธฐ๋ฐ ์ธ์ด vs ํ๋กํ ํ์ ๊ธฐ๋ฐ ์ธ์ด(JS) 1. property 2. ํ๋กํ ํ์ (๊ฐ๋ ์ค๋ช ) 3. ํ๋กํ ํ์ ๊ธฐ๋ฐ ์ธ์ด ๊ฐ์ฒด ์งํฅ ์ธ์ด๋ ํฌ๊ฒ ๋ ๊ฐ์ง ์ค๊ธฐ๋ก ๋๋์ ์๋ค. ํด๋์ค ๊ธฐ๋ฐ ์ธ์ด(C++, Java, C#, Ruby, Python ๋ฑ) ํ๋กํ ํ์ ๊ธฐ๋ฐ ์ธ์ด(JavaScript, ActionScript, JScript ๋ฑ) ํด๋์ค ๊ธฐ๋ฐ & ํ๋กํ ํ์ ๊ธฐ๋ฐ ๊ฐ์ฒด ์งํฅ ์ธ์ด ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๊ฐ์ฒด๋ ์์ ์ ๋ถ๋ชจ ์ญํ ์ ๋ด๋นํ๋ ๊ฐ์ฒด์ ์ฐ๊ฒฐ๋์ด ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ (๋ง์น ๊ฐ์ฒด ์งํฅ์ ์์ ๊ฐ๋ ๊ณผ ๊ฐ์ด) ๋ถ๋ชจ ๊ฐ์ฒด์ ํ๋กํผํฐ ๋๋ ๋ฉ์๋๋ฅผ ์์๋ฐ์ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค. ์ด๋ฌํ ๋ถ๋ชจ ๊ฐ์ฒด๋ฅผ Prototype(ํ๋กํ ํ์ ) ๊ฐ์ฒด ๋๋ ์ค์ฌ์.. ์ด์ 1 2 ๋ค์