728x90
DOM(Document Object Model) VS BOM(Browser OBject Model)
๐ DOM(Document Object Model)
๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(Document Object Model)์ HTML, XML ๋ฌธ์์ ํ๋ก๊ทธ๋๋ฐ interface์ ๋๋ค. DOM์ ๋ฌธ์์ ๊ตฌ์กฐํ๋ ํํ(structured representation)์ ์ ๊ณตํ๋ฉฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ DOM ๊ตฌ์กฐ์ ์ ๊ทผ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ฌ ๋ฌธ์ ๊ตฌ์กฐ ๋ฐ ์คํ์ผ, ๋ด์ฉ ๋ฑ์ ๋ณ๊ฒฝํ ์ ์๊ฒ ๋์์ค๋๋ค.
- ๊ฐ๋จํ๊ฒ ๋งํ์๋ฉด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(์๋ฅผ ๋ค์ด JavaScript)๊ฐ ๊ตฌ์กฐ์ ์ ๊ทผํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํด ๋ฌธ์ ๊ตฌ์กฐ๋ ์คํ์ผ, ๋ด์ฉ์ ๋ณ๊ฒฝํ ์ ์๊ฒ ๋์์ฃผ๋ ๋ชจ๋ธ์ ๋๋ค.
- JavaScript๋ ์ด๋ค ์์ ์ ํ ์ ์๊ฒ ํด์ฃผ๋ ์ธ์ด๋ผ๊ณ ํ๋ฉด DOM์ ๊ทธ ์์ ์ด ์ผ์ด๋๋ ์ฅ์๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
- DOM์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ธ๋ ํธ๋ฆฌ๋ก ํํ์ด ๋ฉ๋๋ค.
์ด๊ฑธ ์ ์์์ผ ํ๋๊ฐ?
- JavaScript๋ฅผ ์ด์ฉํด HTML ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ๋ค๋ฉด?
- ์น ํ์ด์ง์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด?
- ์ธํฐ๋ ํฐ๋ธํ ์น์ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด?
- ์ฆ, ์ ์ ์นํ์ด์ง๊ฐ ์๋๋ผ ๋์ ์ธ ๊ธฐ๋ฅ์ด ์๋ ์น ํ์ด์ง๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๋ฌธ์๋ฅผ ์กฐ์ํ ์ ์๋ DOM์ ๋ํ ๊ฐ๋ ์ด ์์ด์ผ ํฉ๋๋ค.
์ธ์ ์ฐ์ด๋๊ฐ!?
- ์๋ฅผ๋ค์ด ๊ฒ์ํ๋ค๊ณ ํ์๋, ๊ฒ์์ด๋ฅผ ๊ฐ์ ธ์์ผ ํ ๋ ๋ชจ๋ ๋ฌธ์์ด์์ ๊ฒ์์ด๋ฅผ ๊ฐ์ ธ์ฌ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ํด๋น HTML ํ๊ทธ๋ฅผ DOM์ผ๋ก ๊ฐ์ ธ์ API๋ฅผ ์ด์ฉํด ๊ฒ์์ ํ ์ ์์ต๋๋ค.
Data Type
- ๋ช๊ฐ์ง Data Type์ด ์กด์ฌํฉ๋๋ค.
- document
- ๋ธ๋ผ์ฐ์ ๊ฐ ๋ถ๋ฌ์จ ์น ํ์ด์ง๋ฅผ ์๋ฏธํ๋ฉฐ, DOM ํธ๋ฆฌ์ ์ง์ ์ ์ญํ ์ ํ๊ฒ ๋ฉ๋๋ค.
- ์ฆ, ์ ํฌ๊ฐ ๋ณด๊ณ ์๋ ์น ํ์ด์ง๋ฅผ ์๋ฏธํ๊ฒ ๋๋ ๊ฒ์ ๋๋ค.
- element
- ์์์ <title> ํ๊ทธ๋ <a> ๋งํฌ๋ค์ด ์์๊ฐ ๋ฉ๋๋ค.
- nodeList
- getElementsByTagName() ๋ฉ์๋์ ์ํด ๋ฐํ๋ nodeList๋ก, DOM ํธ๋ฆฌ์ ๋ ธ๋๋ค์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
- arrtribute
- ์์ฑ๊ฐ์ผ๋ก <a href="#">์์ href๊ฐ ์ฌ๊ธฐ์ ์ํฉ๋๋ค.
DOM API
- HTML ํ๊ทธ๋ฅผ DOM์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ ๋ฉ์๋๋ค์ด ์์ต๋๋ค. ๋ช๊ฐ์ง๋ง ์ค๋ช ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก tag, id, class, cssSelector๋ฅผ ์ด์ฉํด ์ฐพ๊ฒ ๋ฉ๋๋ค.
๋ฉ์๋ | ์ค๋ช |
---|---|
document.getElementsByTagName(name) | ํด๋น ํ๊ทธ ์ด๋ฆ์ ์์๋ฅผ ๋ชจ๋ ์ ํํจ |
document.getElementById(id) | ํด๋น ์์ด๋์ ์์๋ฅผ ์ ํํจ |
document.getElementByClassName(class) | ํด๋น ํด๋์ค์ ์ํ ์์๋ฅผ ๋ชจ๋ ์ ํํจ |
document.getElementByName(name) | ํด๋น name ์์ฑ ๊ฐ์ ๊ฐ์ง๋ ์์๋ฅผ ๋ชจ๋ ์ ํํจ |
document.querySelector() | ํด๋น ์ ํ์๋ก ์ ํ๋๋ ์์๋ฅผ ์ฒซ๋ฒ์งธ ํ๋๋ง ์ ํํจ |
document.querySelectorAll() | ํด๋น ์ ํ์๋ก ์ ํ๋๋ ์์๋ฅผ ๋ชจ๋ ์ ํํจ |
์์
- ์๋์ ๊ฐ์ด input์ด ์๋ค๊ณ ํด๋ด ์๋ค.
<input id="search" class="search-input-style">
Tag๋ก ์ฐพ๊ธฐ
document.getElementsByTagName('input')
id๋ก ์ฐพ๊ธฐ
document.getElementById('search')
- ๊ฐ์ฅ ์๋๊ฐ ๋น ๋ฅด๊ฒ ๋๋๋ฐ, ๊ทธ ์ด์ ๋ id๋ ํ๋๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
className์ผ๋ก ์ฐพ๊ธฐ
document.getElementsByClassName('search-input-style')
cssSelector๋ก ์ฐพ๊ธฐ
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋๋ฉฐ, ์์์ Tag, id, class ๋ชจ๋๋ฅผ ์ด์ฉํด์ ์ฐพ์ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค.
document.querySelector('.search-input-style') // ์ฒซ๋ฒ์งธ Element document.querySelectorAll('.search-input-style') // ๋ชจ๋ Element
์ ๋ฆฌ
- ๋ฐ๋ผ์ DOM์ HTML์ ์ํ API์ด๋ฉฐ, HTML์ ํ์ํ ์ ์๊ณ , HTML ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟ์ ์๋ค.
๐ฑ BOM(Browser Object Model)
- ์น ๋ธ๋ผ์ฐ์ ์ ํ๊ฒฝ์ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ฐ์ฒด์ฒ๋ผ ๋ค๋ฃจ๋ ๋ชจ๋ธ๋ก, ๋๋ถ๋ถ ๋ธ๋ผ์ฐ์ ์์ ๊ตฌํ๋์ด ์๋ ๊ธฐ๋ฅ๋ค์ด ์์ง๋ง ํ์ค์ด ์กด์ฌํ์ง ์์ ๋ธ๋ผ์ฐ์ ๋ง๋ค ์ธ๋ถ์ฌํญ์ ๋ค๋ฅด๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
- ๋ฐ๋ก ์ด BOM์ธ๋ฐ, ์ด๊ฑธ ์ด์ฉํด ์น ๋ธ๋ผ์ฐ์ ์ ๋ฒํผ, URL ์ฃผ์ ์ ๋ ฅ์ฐฝ, ํ์ดํ ๋ฐ ๋ฑ ์น ๋ธ๋ผ์ฐ์ ์๋์ฐ ๋ฐ ์นํ์ด์ง์ ์ผ๋ถ๋ถ์ ์ ์ดํ ์ ์๊ฒ ํฉ๋๋ค.
- window ๊ฐ์ฒด๋ฅผ ํตํด ์ฝ๊ฒ ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ด๊ฑธ ์ ์์์ผ ํ๋๊ฐ?
- ์ฌ์ฉ์๊ฐ ํด๋ฆญ ํ์๋, ์๋ด์ฐฝ์ ๋ณด์ฌ์ฃผ๊ณ ์ถ๋ค!?
- ํ์ฌ url ์์น ๋ฐ ์ ์ ํ์คํ ๋ฆฌ๋ฅผ ์๊ณ ์ถ๋ค!?
- ์ ์ ๊ฐ ์ ์ํ ํ๊ฒฝ์ ์๊ณ ์ถ๋ค!?
- ....
๋ํ์ ์ธ BOM ๊ฐ์ฒด
window
- Global Context
- ๋ธ๋ผ์ฐ์ ์ฐฝ
- ๋ชจ๋ ๊ฐ์ฒด์ ์กฐ์๋
screen
- ์ฌ์ฉ์ ํ๊ฒฝ์ ๋์คํ๋ ์ด ์ ๋ณด
- ํ๋ฉด ํฌ๊ธฐ๋ง๋ค ๋ค๋ฅด๊ฒ ๋์ํ๊ณ ์ถ์ ๋ ์ฌ์ฉ
location
- ํ์ฌ ํ์ด์ง URL
navigator
- ์น ๋ธ๋ผ์ฐ์ ๋ฐ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ
- ๋ธ๋ผ์ฐ์ ๋ง๋ค ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ผ ํ ๋ ์ฌ์ฉ
history
- ํ์ฌ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๊ทผํ๋ URL ํ์คํ ๋ฆฌ
......
์์
window.onbeforeunload = function() {
return '์์ฑ ์ค์ธ ๋ฉ์์ง๊ฐ ์์ต๋๋ค.'
}
- ์์ ๊ฐ์ ์ฝ๋๋ฅผ ์ด์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ๋๊ฐ๊ธฐ ์ ์ ์๋ด์ฐฝ์ ๋์ธ์ ์์ต๋๋ค.
- window๋ฅผ ์ด์ฉํ๋ฉด ์ ์ญ ๋ณ์๋ ์ ์ธ์ด ๊ฐ๋ฅํฉ๋๋ค.
const really = 'Really?'
window.really; // 'Really?'
์ ๋ฆฌ
- ์น ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ์ ๊ฐ์ฒด์ฒ๋ผ ๋ค๋ฃจ๊ฒ ํ๊ณ , ์ ์๋ ํ์ค์ด ์์ด ๋ธ๋ผ์ฐ์ ๋ง๋ค ๊ตฌํ์ด ๋ค๋ฅด์ง๋ง, ์ฌ์ฉ์ ๊ฒฝํ(UX)๋ฅผ ํฅ์์ํฌ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค.
์ถ์ฒ
- NEXT-STEP ๋ธ๋์ปคํผ ๋ ๋ฒจ 1 8๊ธฐ ๊ฐ์ ์๋ฃ
- Window ๊ฐ์ฒด์ BOM
728x90
728x90
'Frontend > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Learn Javascript Reduce method with 10 examples(Reduce ๋ฉ์๋์ 10๊ฐ์ง ์์ ๋ก ๋ฐฐ์๋ณด์) (0) | 2021.09.26 |
---|---|
7 Powerful JavaScript Shorthands That You Should Know(์์์ผ ํ 7๊ฐ์ ๊ฐ๋ ฅํ JavaScript์ ๋จ์ถ ํ๊ธฐ๋ฒ) (0) | 2021.08.16 |
2์ฐจ์ ๋ฐฐ์ด ๋ง๋ค๊ธฐ (0) | 2020.12.04 |
Array.every() & Array.some() (0) | 2020.11.14 |
๊ฐ๋จํ๊ฒ ์ง์๋ฅผ ๋ณํํ๊ธฐ (0) | 2020.11.06 |