TIL

๐Ÿ“— ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive | #1 DOM [DOM ์ด๋ž€?]

grasinnong 2022. 5. 25. 10:46

 

 

 

 

์šฉ์–ด ์ •๋ฆฌ

 

- ํŒŒ์‹ฑ(parsing) : ๋ฌธ์žฅ์ด๋‚˜, ๋ฐ์ดํ„ฐ ๋ฌธ์ž์—ด์„ ๋ถ„์„ํ•˜๊ณ  ํ•ด๋ถ€ํ•˜์—ฌ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฝ‘์•„๋‚ด๋Š” ๊ธฐ์ˆ  

 

์˜ˆ๋ฅผ ๋“ค์–ด JSON.parse(json) ๋ฉ”์„œ๋“œ๋Š” ์ธ์ž๋กœ ๋ฐ›์€ json์„ ๋ถ„์„ํ•˜๊ณ  ํ•ด๋ถ€ํ•˜์—ฌ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. 

const json = `{"string" : "json ๋ณ€ํ™˜", "result" : "true"}`;
const result = JSON.parse(json);

console.log(result);//{string: 'json ๋ณ€ํ™˜', result: 'true'}
console.log(result.string); //json ๋ณ€ํ™˜
console.log(result.result); //true

 

 

-API(Application Programming Interface) : ๋ฆฌ๋ชจ์ปจ ์—ญํ•  

tv๋ฅผ ์‹œ์ฒญํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์šฐ๋ฆฌ๋Š” ๋ฆฌ๋ชจ์ปจ์„ ํ†ตํ•ด ๋ชจ๋‹ˆํ„ฐ์™€ ๋Œ€ํ™”ํ•œ๋‹ค. ๋ฆฌ๋ชจ์ปจ์€ tv์™€ ๋‚˜์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๋„์™€์ฃผ๋Š” ๋งค๊ฐœ์ฒด์ด๋‹ค. ์ค‘๊ฐ„์—์„œ ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ”„๋กœ๊ทธ๋žจ์ด ์˜์‚ฌ์†Œํ†ตํ•˜๋Š” ๊ฒƒ์„ ๋„์™€์ฃผ๋Š” ๋งค๊ฐœ์ฒด๋ฅผ api ๋ผ๊ณ  ํ•œ๋‹ค. ๋ฆฌ๋ชจ์ปจ์„ api๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

-๋„ค์ดํ‹ฐ๋ธŒ / ํ˜ธ์ŠคํŠธ / ์‚ฌ์šฉ์ž์ •์˜ ๊ฐ์ฒด

javascript ๊ฐ์ฒด๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐ์ฒด, ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด, ์‚ฌ์šฉ์ž์ •์˜ ๊ฐ์ฒด๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1. ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐ์ฒด๋Š” ECMAScript์—์„œ ์ •์˜๋˜์–ด์ง„ ๊ฐ์ฒด๋กœ ํ™˜๊ฒฝ์— ๊ด€๊ณ„์—†์ด ์–ด๋””์„œ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋นŒํŠธ์ธ ๊ฐ์ฒด๋ผ๊ณ ๋„ ํ•œ๋‹ค. String(), Number(), Boolean(), Array() ๋“ฑ์ด ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค. 

 

ํ‘œ์ค€ ๋‚ด์žฅ ๊ฐ์ฒด - JavaScript | MDN

์ด ์žฅ์€ JavaScript์˜ ๋ชจ๋“  ํ‘œ์ค€ ๋‚ด์žฅ ๊ฐ์ฒด์™€ ๊ทธ ๋ฉ”์„œ๋“œ ๋ฐ ์†์„ฑ์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

developer.mozilla.org

 

2. ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด๋Š” ๋Ÿฐํƒ€์ž„(์‹คํ–‰ ํ™˜๊ฒฝ)์—์„œ ์ œ๊ณต๋˜๋Š” ๊ฐ์ฒด์ด๋‹ค. window, fetch, dom ๋…ธ๋“œ ๊ฐ์ฒด ๋“ฑ์ด ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค. 

 

3. ์‚ฌ์šฉ์ž์ •์˜ ๊ฐ์ฒด๋Š” ์ง์ ‘ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ๊ฐ์ฒด์ด๋‹ค. 

let myObj = {
 "name" : "geze",
 "age" : 22
}

 

 


 

 

 

DOM(Document Object Model)

 

dom ์€ html ๋ฌธ์„œ์˜ ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” API, ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. 

๐Ÿ‘‰ dom์€ html ๋ฌธ์„œ์˜ ์š”์†Œ๋“ค์„ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ๋ชจ์ฝ˜์ด๋‹ค.

 

๋ธŒ๋ผ์šฐ์ €์—์„œ html ๋ฌธ์„œ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ Œ๋”๋งํ• ๊นŒ?

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ์—”์ง„์ด html ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ DOM ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. JSON.parse์˜ ๊ฒฐ๊ณผ๋ฌผ์ด ๊ฐ์ฒด์˜€๋‹ค๋ฉด, ๋ Œ๋”๋ง ์—”์ง„์˜ ๊ฒฐ๊ณผ๋ฌผ์€ DOM ๋…ธ๋“œ ๊ฐ์ฒด์ด๋‹ค. 

 

ํ•˜๋‚˜์˜ html ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

1 : ์‹œ์ž‘ ํƒœ๊ทธ

2 : ์†์„ฑ ์ด๋ฆ„

3 : ์†์„ฑ ๊ฐ’

4 : ์ฝ˜ํ…์ธ  

5 : ์ข…๋ฃŒ ํƒœ๊ทธ 

 

๊ทธ๋ฆฌ๊ณ  ์œ„์˜ html ์š”์†Œ๋Š” ํŒŒ์‹ฑ๋˜์–ด ๋…ธ๋“œ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜๋œ๋‹ค. 

 

1 : ์‹œ์ž‘ ํƒœ๊ทธ → ์š”์†Œ ๋…ธ๋“œ

2 : ์†์„ฑ ์ด๋ฆ„ → ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ๋…ธ๋“œ 

3 : ์†์„ฑ ๊ฐ’ → ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ๋…ธ๋“œ

4 : ์ฝ˜ํ…์ธ  → ํ…์ŠคํŠธ ๋…ธ๋“œ

5 : ์ข…๋ฃŒ ํƒœ๊ทธ → ์š”์†Œ ๋…ธ๋“œ 

- ๋…ธ๋“œํƒ€์ž…

 

1. ๋ฌธ์„œ ๋…ธ๋“œ(document node) : DOM ํŠธ๋ฆฌ์˜ ์ตœ์ƒ์œ„ ๋ฃจํŠธ ๋…ธ๋“œ. document ๊ฐ์ฒด. ๋ฌธ์„œ๋‹น document ๊ฐ์ฒด๋Š” ๋”ฑ ํ•œ ๊ฐœ์ด๋‹ค.

2. ์š”์†Œ ๋…ธ๋“œ(element node) : html ํƒœ๊ทธ๋“ค์ด ํ•ด๋‹น๋œ๋‹ค. 

3. ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ๋…ธ๋“œ(attribute node) : ์š”์†Œ์˜ ์†์„ฑ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋…ธ๋“œ. ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ๋…ธ๋“œ๋Š” ์š”์†Œ ๋…ธ๋“œ์™€ ๋‹ฌ๋ฆฌ ๋ถ€๋ชจ ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค. div ํƒœ๊ทธ๋Š” body ํƒœ๊ทธ์™€ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์œผ๋‚˜, class="greeting" ์€ ์š”์†Œ ๋…ธ๋“œ๋ž‘๋งŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค. 

4. ํ…์ŠคํŠธ ๋…ธ๋“œ(text node) : html ์š”์†Œ์˜ ํ…์ŠคํŠธ, ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋…ธ๋“œ. dom ํŠธ๋ฆฌ์˜ ์ตœ์ข…๋‹จ(๋ฆฌํ”„๋…ธ๋“œ: ์ž์‹ x)์ด๋‹ค.

 

์ด ์™ธ์—๋„ ๊ณต๋ฐฑ ํ…์ŠคํŠธ ๋…ธ๋“œ, comment ๋…ธ๋“œ, document type ๋…ธ๋“œ ๋“ฑ ์ด 12๊ฐœ์˜ ๋…ธ๋“œ ํƒ€์ž…์ด ์žˆ๋‹ค. 

 

 

 

๊ฐ ๋…ธ๋“œ๋“ค์€ ๋ถ€๋ชจ์š”์†Œ์—๊ฒŒ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ƒ์†์„ ๋ฐ›๋Š”๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์œ„์˜ ๊ธฐ๋Šฅ๋“ค(DOM API)์„ ํ†ตํ•ด html ์š”์†Œ๋“ค์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.  

 

 

 

 

 

 

 

 

JSON.parse() - JavaScript | MDN

JSON.parse() ๋ฉ”์„œ๋“œ๋Š” JSON ๋ฌธ์ž์—ด์˜ ๊ตฌ๋ฌธ์„ ๋ถ„์„ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ์—์„œ JavaScript ๊ฐ’์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒ์ ์œผ๋กœ, reviver ํ•จ์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•  ๊ฒฝ์šฐ, ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์ „์— ๋ณ€ํ˜•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

developer.mozilla.org

 

[TIL] ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด(Host Objects)์™€ ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐ์ฒด(Native Objects)

ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด(Host Objects)์™€ ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐ์ฒด(Native Objects)์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด ๊ทœ์•ฝ(ECMAScript)์œผ๋กœ ์ •์˜๋˜์–ด์ง„ ๊ฐ์ฒด. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์—ญ์˜ ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐ

velog.io