์ƒˆ์†Œ์‹

Languages/Java Script

[Js] Object Model | ๊ฐ์ฒดํ™”๋ž€? | Core | BOM | DOM

  • -
๋ฐ˜์‘ํ˜•

๋ชจ๋“  ํฌ์ŠคํŒ…์€ ์ธํ”„๋Ÿฐ [์ƒํ™œ์ฝ”๋”ฉ] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์˜์˜ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ์œผ๋ฉฐ

์ถœ์ฒ˜๋Š” ์•„๋ž˜์˜ ์ฃผ์†Œ๋กœ "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#

 

์›น๋ธŒ๋ผ์šฐ์ € Javascript (์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ) - ์ธํ”„๋Ÿฐ

์ƒํ™œ์ฝ”๋”ฉ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์ขŒ ์ž…๋‹ˆ๋‹ค. ์›น๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๊ณต๋ถ€ํ•ด ๋ด…๋‹ˆ๋‹ค. ์ดˆ๊ธ‰ ์›น ๊ฐœ๋ฐœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด JavaScript ์˜จ๋ผ์ธ ๊ฐ•์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์ขŒ

www.inflearn.com

์œ„ ๊ฐ•์˜ ์ค‘ ๊ธฐ์ดˆ์ ์ธ ๋‚ด์šฉ์ด๋‚˜, ํ•„์š” ์ง€์‹ ๋“ฑ์˜ ๋‚ด์šฉ์€ ๋”ฐ๋กœ ํฌ์ŠคํŒ… ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. (html, css, ์‹ค์Šต ํ™˜๊ฒฝ ๋“ฑ..)


 

Object Model 

์›น๋ธŒ๋ผ์šฐ์ €์˜ ๊ตฌ์„ฑ์š”์†Œ๋“ค์€ ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ๊ฐ์ฒดํ™”๋˜์–ด ์žˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ด ๊ฐ์ฒด๋ฅผ ์ œ์–ดํ•ด์„œ ์›น๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์ด ๊ฐ์ฒด๋“ค์€ ์„œ๋กœ ๊ณ„์ธต์ ์ธ ๊ด€๊ณ„๋กœ ๊ตฌ์กฐํ™”๋˜์–ด ์žˆ๋‹ค. BOM๊ณผ DOM์€ ์ด ๊ตฌ์กฐ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ํ‹€์˜ ๋ถ„๋ฅ˜๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด ๊ด€๊ณ„๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

(์ถœ์ฒ˜ :  http://learn.javascript.ru/browser-environment )

 

 

์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด 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 ๋Š” ๋ชจ๋“  ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ์–ด๋””์—์„œ๋‚˜ ํ™˜๊ฒฝ์— ๊ด€๊ณ„์—†์ด ๋™์ž‘ํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.