๋ชจ๋ ํฌ์คํ
์ ์ธํ๋ฐ [์ํ์ฝ๋ฉ] ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์์ ๋ด์ฉ์ ๋ด๊ณ ์์ผ๋ฉฐ
์ถ์ฒ๋ ์๋์ ์ฃผ์๋ก "egoing Lee"๋์ ์๋ฃ์
๋๋ค.
์์
์ ์ธ ์๋๊ฐ ์๋ ๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํด๋๋ ๋ชฉ์ ์ผ๋ก ํฌ์คํ
ํ ๊ฒ์
๋๋ค.
www.inflearn.com/course/javascript-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B0%95%EC%A2%8C#
์ ๊ฐ์ ์ค ๊ธฐ์ด์ ์ธ ๋ด์ฉ์ด๋, ํ์ ์ง์ ๋ฑ์ ๋ด์ฉ์ ๋ฐ๋ก ํฌ์คํ
ํ์ง ์๊ฒ ์ต๋๋ค. (html, css, ์ค์ต ํ๊ฒฝ ๋ฑ..)
Object Model
์น๋ธ๋ผ์ฐ์ ์ ๊ตฌ์ฑ์์๋ค์ ํ๋ํ๋๊ฐ ๊ฐ์ฒดํ๋์ด ์๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ด ๊ฐ์ฒด๋ฅผ ์ ์ดํด์ ์น๋ธ๋ผ์ฐ์ ๋ฅผ ์ ์ดํ ์ ์๊ฒ ๋๋ค.
์ด ๊ฐ์ฒด๋ค์ ์๋ก ๊ณ์ธต์ ์ธ ๊ด๊ณ๋ก ๊ตฌ์กฐํ๋์ด ์๋ค. BOM๊ณผ DOM์ ์ด ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ๊ฐ์ฅ ํฐ ํ์ ๋ถ๋ฅ๋ผ๊ณ ํ ์ ์๋ค.
์ด ๊ด๊ณ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ๋ค.
์ฝ๊ฒ ๋งํ์๋ฉด Object Model์ ํฐ ํ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ธ๋ผ์ฐ์ ๋ฅผ ์ ์ดํ๊ธฐ ์ํด ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ฒ ์ด๊ฒ์ "๊ฐ์ฒดํ"๋ผ๊ณ ํ๋ค.
์๋ฅผ ๋ค์ด๋ณด์๋ฉด, ์น ๋ธ๋ผ์ฐ์ ๋ ๊ฐ ํ๊ทธ์ ๋ฐ๋ผ ๊ฐ์ฒด๋ก ๋ง๋ค๊ณ , ์ฐ๋ฆฌ๋ ์ด๋ฅผ ์ ์ดํ๊ธฐ ์ํด ๊ทธ ๊ฐ์ฒด๋ฅผ ์ฐพ์๋ด์ด์ผ ํ๋ค.
๋ฏธ๋ฆฌ ์ค๋น๋ ๊ฐ์ฒด ์ค์์ document๋ผ๋ ๊ฐ์ฒด๊ฐ ์๊ณ ์ด ๊ฐ์ฒด๋ getElementsByTagName()์ด๋ผ๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
ํ๊ทธ ๋ค์์ ์ด์ฉํด์, ์๋ฆฌ๋จผํธ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์จ๋ค ๋ผ๋ ๋ป์ ๊ฐ์ง ์ด ๋ฉ์๋์ ์ธ์๋ก img๋ฅผ ์ฃผ๊ฒ ๋๋ค๋ฉด,
img์ ๋ผ๋ ํ๊ทธ์ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ ์๋ฆฌ๋จผํธ๋ฅผ ๊ฐ์ง๊ณ ์์ ๋ฆฌํดํด์ฃผ๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ "๋ชจ๋ "์ด๋ค. ์ฆ ๋ณต์ํ์ผ๋ก ๊ฐ์ ๋ฆฌํดํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ํํ๋ฅผ ๋๊ฒ ๋๋ค.
var imgs ๋ผ๋ ๋ณ์์ ๊ฐ์ ๋ด์์ค๋ฉด ์ด๋ฅผ ๋ฐฐ์ด์ ํํ๋ก ๋ฆฌํดํด์ฃผ๋ ๊ฒ์ด๋ค.
imgs[0] ์ด๋ผ๊ณ ํ๋ฉด ์ ์ด๋ฏธ์ง ํ๊ทธ๋ฅผ ์๋ฏธํ๋ "๊ฐ์ฒด"๊ฐ ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ imgs[0].style์ด๋ผ๊ณ ํ๋ฉด, ์ ํ๊ทธ ์ฆ imgs๋ผ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ํ๋กํผํฐ๋ฅผ ์๋ฏธํ๋ค.
์ฌ๊ธฐ์ style์ด๋ผ๋ ์์ฑ์ ๊ฒฐ๊ตญ imgํ๊ทธ์ css๋ฅผ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ style.width๋ก ๊ฐ์ ๋ฐ๊พธ์ด ์ค๋ค๋ฉด, ์ค์ css๊ฐ ๋ณ๊ฒฝ๋๊ฒ ๋๋ ๊ฒ์ด๋ค.
์กฐ๊ธ ํฐ ํ์ ์ดํด๋ณด์.
๋งจ ์์์ ์ค๋ช
ํ๋ ๊ณ์ธต์ ๋ชจ๋ธ ์ฌ์ง์ ํ์ธํด๋ณด๋ฉด Window๊ฐ ์ ์ผ ์๋จ์ ์์นํ๋ค.
Window ๋ผ๋ ๊ฐ์ฒด๋ ํฌ๊ฒ ๋๊ฐ์ง์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋๋ฐ, ์ฒซ ๋ฒ์งธ๋ก๋ ์ ์ญ๊ฐ์ฒด, ๋ ๋ฒ์งธ๋ก๋ window์ frame๊ณผ ๊ฐ์ ๊ฒ๋ค์ ์ ์ดํ๊ธฐ ์ํ ๊ฐ์ฒด ๋ผ๋ ์๋ฏธ์ด๋ค.
์๋์ฐ๊ฐ ๊ฐ์ง ์ค์ํ ์์ฑ ์ค ํ๋๊ฐ ๋ฐ๋ก document์ด๊ณ , ์ด ์์ฑ์ ์น ํ์ด์ง์ ์๋ ๋ฌธ์(ํ๊ทธ)๋ฅผ ์ ์ดํ๋ ์ญํ ์ ํ๋ค. ๊ทธ๋์ ์ด๋ฅผ Document Object Model ์ฆ DOM ์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ด๋ค.
๋ค์์ผ๋ก Browser Object Model ์ฆ BOM์, ํ์ฌ ์ด ์นํ์ด์ง๊ฐ ๊ฐ๋ฅดํค๊ณ ์๋ url์ ์์๋ธ๋ค๊ฑฐ๋, ํ์ํ๋ ํ์ด์ง๋ฅผ reload ํ๊ฑฐ๋ ๊ฒฝ๊ณ ์ฐฝ์ ๋์ฐ๊ฑฐ๋ ํ๋ ์ญํ ์ ํ๋ค.
์ด ๊ฐ์ฒด ๋ํ Window๊ฐ์ฒด์ ํ๋กํผํฐ์ด๋ค.
๋ง์ง๋ง์ผ๋ก JavaScript Core๋ผ๋ ๊ฒ์ด ์๋๋ฐ, ํธ์คํธ ํ๊ฒฝ์ด ๋ฌด์์ด๋ ๊ฐ์ ๊ทธ๊ฒ์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ์ ์ดํ๋ ์์คํ
์ด๋ผ๋ฉด ๊ณตํต์ ์ผ๋ก ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด๋ค์ด๋ค.
์์ ์ค๋ช
ํ DOM๊ณผ BOM ์ ์น ๋ธ๋ผ์ฐ์ ์ ๋ง์ถ์ด์ง ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ํธ์คํธ ํ๊ฒฝ์ด ๋ณํ๋ค๋ฉด (๊ตฌ๊ธ ์ฑ์ค์คํ ์ด๋ node.js์ ๊ฐ์) ์ฌ์ฉํ ์๊ฐ ์๋ค. ํ์ง๋ง javascript ๋ ๋ชจ๋ ํธ์คํธ ํ๊ฒฝ์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์ด๋์์๋ ํ๊ฒฝ์ ๊ด๊ณ์์ด ๋์ํ๋ค.