DOM ์ด๋ ต๊ฒ ์๊ฐํ์ง๋ง
OM์ Object Model, ๊ฐ์ฒด ์งํฅ ๋ชจ๋ธ์ ๋ปํ๋ค. ๋ญ๊ฐ๋ฅผ ๊ฐ์ฒด๋ก ํํํ๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค. ๋์๊ฐ Documnet๊ฐ ์ถ๊ฐ๋ "D"OM์ ์น ํ์ด์ง์ ๋ด์ฉ์ ๊ฐ์ฒด๋ก ํํํ๋ ํ์์ ๋งํ๋ค. Brower๊ฐ ์ถ๊ฐ๋ "B"OM์ ์น ๋ธ๋ผ์ฐ์ ์์ฒด๋ฅผ ๊ฐ์ฒด๋ก ํํํ๋ ํ์์ ๋งํ๋ค. ์ด ๋์ ๊ฐ์ฒด๋ค๋ก๋ถํฐ ์ ๊ณต๋๋ DOM API, BOM API๋ฅผ ํตํด JavaScript๊ฐ ์น ํ์ด์ง/๋ธ๋ผ์ฐ์ ๋ฅผ ์ฝ๊ฒ ์ ์ด ๋ฐ ์กฐ์ํ ์ ์๋ค.
DOM
HTML๋ฌธ์์ ๊ตฌ์กฐ์ ๋ด์ฉ์ ๊ฐ์ฒด ํ์
์ผ๋ก ๋ณํ์์ผ ์น ํ์ด์ง์ ๊ฐ์ฒด์งํฅ์ ์ ๊ทผ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค. ๋ ๊ฒ ๊ทธ๋๋ก์ Document๋ฅผ Object๋ก ๋ง๋ค๋ฉด(=DOM), ๊ตฌ์กฐ, ๋ด์ฉ, ์คํ์ผ์ ์์๋ค์ ๊ตฌ์กฐ์ ์ผ๋ก ์ ๊ทผํ ์ ์๊ฒ ๋๋ค.
DOM์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋
๋ฆฝ์ ์ด๋ค.
DOM์ ๊ตฌํ์ ์ด๋ ํ ์ธ์ด์์๋ ๊ฐ๋ฅํ๋ค. DOM์ ์ถ์์ ์ธ ๋ชจ๋ธ์ด๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ธ์ดํํ์ฌ ํ์ด์ง๋ฅผ ์กฐ์ํ๊ฑฐ๋, ํ์ด์ฌ์์ ์ธ์ดํํ์ฌ ํฌ๋กค๋งํ์ฌ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
DOM์ ์ข ๋ฅ
CORE ๋: ๋ชจ๋ ๋ฌธ์ ํ์
์ ์ํ ๋๋ชจ๋ธ
HTML ๋: HTML๋ฌธ์๋ฅผ ์กฐ์ํ๊ณ ์ ๊ทผํ๋ ํ์คํ๋ ๋ฐฉ๋ฒ ๋ชจ๋ HTML์์๋ HTML DOM์ ํตํด ์ ๊ทผํ ์ ์๋ค.
XML ๋: XML๋ฌธ์๋ฅผ ์กฐ์ํ๊ณ ๋ชจ๋ XML์์๋ XML DOM์ ํตํด ์ ๊ทผํ ์ ์๋ค.
HTML์์ DOM์๋ฏธ
์๋ณธ HTML ๋ฌธ์๋ฅผ ๊ฐ์ฒดํ ์ํด์ผ๋ก์จ ๊ตฌ์กฐ๊ฐ ๋ช
ํํด์ง๊ณ ๊ด๋ฆฌํ๊ธฐ ์์ํด์ก๋ค.
์น ๋ธ๋ผ์ฐ์ ์ ์ ์์ฌ๋ณ, ๋ฒ์ ๋ณ, ํ๋ซํผ, ์ธ์ด ์ฐจ์ด์ ์์กดํ์ง ์๊ณ , ์น ํ์ด์ง์ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ก๋ค.
Javascript์์ DOM์๋ฏธ
์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์น ํ์ด์ง ๋ด ๋ชจ๋ ์์์ ์ ๊ทผํ ์ ์๊ฒ ํ๋ค.
ํ์ด์ง์ ์ฝํ
์ธ ๋ฐ ๊ตฌ์กฐ, ๊ทธ๋ฆฌ๊ณ ์คํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ ์ด ๊ฐ๋ฅํด์ก๋ค.
{ document: { html: { head: { title: ... }, body: { header: ... } } } }
- window.document๋ก ์ ๊ทผํ๊ฑฐ๋, window๋ ์๋ต ๊ฐ๋ฅ(์ ์ญ ๊ฐ์ฒด)ํ๊ธฐ ๋๋ฌธ์ document๋ก ์ ๊ทผํ๋ฉด ๋๋ค.
- document ๊ฐ์ฒด๋ ์ ๋ง์ ์์ฑ๊ณผ ๋ฉ์๋๋ค์ด ์๋ค.(DOM API)
BOM
DOM API์ ๋ง์ฐฌ๊ฐ์ง๋ก, BOM ๊ฐ์ฒด๋ค๋ก๋ถํฐ ์ ๊ณต๋๋ API๋ฅผ BOM API๋ผ๊ณ ํ๋ค. ์ต์์ BOM ๊ฐ์ฒด์ ํด๋นํ๋ window ๊ฐ์ฒด๋ ์น ๋ธ๋ผ์ฐ์ ํญ ํ๋ ๋น ํ๋ ์กด์ฌํ๊ธฐ ๋๋ฌธ์, BOM API๋ ์น ๋ธ๋ผ์ฐ์ ์ ์ฒด๊ฐ ์๋ ์น ๋ธ๋ผ์ฐ์ ํญ ํ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๊ณ ์๋ค. DOM๊ณผ ๋ฌ๋ฆฌ BOM์ ๊ณต์์ ์ธ ํ์ค์ด ์๊ธฐ์ ์น ๋ธ๋ผ์ฐ์ ๋ง๋ค BOM API๊ฐ ์กฐ๊ธ์ฉ ๋ค๋ฅผ ์ ์์ง๋ง ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋น์ทํ BOM API๋ฅผ ์ ๊ณตํ๋ค.
- navigator: ๋ธ๋ผ์ฐ์ ๋, ์ด์์ฒด์ (OS) ๋ํ ์ ํ์
- screen: ํ๋ฉด์ ๋ํ ์ ๋ณด ํ์
- location: ์ฃผ์์ ๋ํ ์ ๋ณด ํ์
- history: ์์ผ๋ก๊ฐ๊ธฐ, ๋ค๋ก๊ฐ๊ธฐ๋ฑ ์ฃผ์์ด๋ ์กฐ์
Web API
Web API๋ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์๋ฏธํ๋ ๊ฒ์ผ๋ก, DOM API๋ BOM API ๋ํ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๊ณตํ๋ Web API์ ์ผ๋ถ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ๊ทธ๋ฐ๋ฐ ECMAScript์์ ์ ์ํ๋ ๋ณธ์ง์ ์ธ JavaScript์์๋ Web API, ์ฆ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ค๊น์ง ์ ์ํ๊ณ ์์ง ์๋ค. ์ฆ Web API๋ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ผ ๋ฟ, JavaScript ์์ฒด์ ๋ช ์ธ์๋ ํฌํจ๋์ด ์์ง ์๋ค๋ ๊ฒ์ด๋ค. ๋ค๋ง ๊ฐ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๋ด์ฅํ๊ณ ์๋ JavaScript ์์ง์ด Web API๋ ์ดํดํ ์ ์๋๋ก ํ์ฅ์ฑ ์๊ฒ ๊ตฌํ์ด ๋์ด ์์ ๋ฟ์ด๋ค. ๊ทธ๋์ Node.js์ JavaScript ์์ง์ด ํฌ๋กฌ์ V8 ์์ง์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค๋ ๋ง์ ์๋ฏธ๋, ํฌ๋กฌ์ V8 ์์ง์ด ECMAScript์์ ์ ์ํ๋ JavaScript ์์ฒด์ ๋ช ์ธ๋ฅผ ๊ตฌํํ ๋ถ๋ถ์ ๊ทธ๋๋ก ๊ฐ์ ธ์์ ์์ง์ ๊ตฌ์ถํ๋ค๋ ๋ง์ด ๋๋ค. ๋ค๋ง Node.js ์์ง๋ console.log() ํจ์์ ๊ฐ์ ๋ช๋ช Web API๋ค์ ์ดํดํ ์ ์๋๋ก ์ด๋ ์ ๋ ํ์ฅ์ฑ ์๊ฒ ๊ตฌ์ถ๋ผ ์๊ธด ํ๋ค.