BOM vs DOM

์ „์—ญ ๊ฐ์ฒด์˜ ์ดˆ๊ธฐ ์ƒํƒœ์—๋Š” DOM, BOM, ๋นŒํŠธ์ธ ๊ฐ์ฒด๊ฐ€ ์„ค์ •๋˜์–ด์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ DOM๊ณผ BOM์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด์ž.

Document Object Model(DOM)

  • DOM์€ HTML๊ณผ XML ๋„ํ๋จผํŠธ์— ์ ‘๊ทผํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” API๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • DOM์€ ๋„ํ๋จผํŠธ์˜ ๊ตฌ์กฐ๋ฅผ ๋…ธ๋“œ์˜ ๊ณ„์ธต์  ๊ตฌ์กฐ๋กœ ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค.

  • DOM์€ XML ํŒŒ์ผ์ด๋‚˜ HTML์„ ๋…ธ๋“œ์˜ ๊ณ„์ธต์  ๊ตฌ์กฐ์ธ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

  • ์ด ํŠธ๋ฆฌ๋Š” ๋„ํ๋จผํŠธ์˜ ๋‚ด์šฉ๊ณผ ๋…ธ๋“œ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

<!DOCTYPE html>
<html>
 <head>
  <title>My title</title>
 </head>
 <body>
   <h1>My header</h1>
   <a href='#'>My Link</a>
 </body>
</html>

Node Types

DOM์€ ์—ฌ๋Ÿฌ ํƒ€์ž…์„ ์ •์˜ํ•˜์—ฌ, ๊ฐ๊ฐ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ค๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•˜์˜€๋‹ค.

  • Document : ๋ชจ๋“  ๋„ํ๋จผํŠธ์˜ ๋ฃจํŠธ๋…ธ๋“œ์ด๋‹ค.

  • DocumentType : doctype ํƒœ๊ทธ๋กœ ๋‚˜ํƒ€๋‚ธ document type definition์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • Element : ํƒœ๊ทธ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • Attribute : tag์˜ attribute๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” key-value ์Œ์ด๋‹ค.

  • Text: ๋…ธ๋“œ์˜ ๋‚ด์šฉ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • Comment : ๋„ํ๋จผํŠธ์˜ ์ฃผ์„์ด๋‹ค.

Browser Object Model(BOM)

๋ธŒ๋ผ์šฐ์ € ์ฐฝ์— ์ ‘๊ทผํ•˜๊ณ , ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด BOM์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” BOM์„ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ณต์‹์ ์ธ standard๋Š” ์—†์ง€๋งŒ, ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ฑฐ์˜ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ–๋„๋ก ๊ตฌํ˜„๋˜์—ˆ๋‹ค.

์ „์—ญ ๋ณ€์ˆ˜์™€ ์ „์—ญ ๋ฉ”์„œ๋“œ

  • window ๊ฐ์ฒด๋Š” root element์ด๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์„์€ window ๊ฐ์ฒด์— ์ง๊ฐ„์ ‘์ ์œผ๋กœ ๋ถ™์–ด์žˆ๋‹ค.

  • ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐ ํƒญ๋งˆ๋‹ค ๊ณ ์œ ์˜ window๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค. ์ฆ‰, ๊ฐ™์€ ์œˆ๋„์šฐ์—ฌ๋„ ํƒญ๋ผ๋ฆฌ window ๊ฐ์ฒด๋Š” ๊ณต์œ ๋˜์ง€ ์•Š๋Š”๋‹ค.

  • ์ „์—ญ ์Šค์ฝ”ํ”„์—์„œ ์„ ์–ธ๋œ ๋ชจ๋“  ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋Š” ์ „์—ญ ๊ฐ์ฒด์— ์†ํ•˜๊ฒŒ ๋œ๋‹ค(let, const ์ œ์™ธ). ์ฆ‰, ์ „์—ญ ๋ณ€์ˆ˜๋Š” window ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋˜๋ฉฐ, ์ „์—ญ ํ•จ์ˆ˜๋Š” window ๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋œ๋‹ค.

var foo = 'foo';
console.log(window.foo) // foo
  • ์ „์—ญ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ์™€ ํ”„๋กœํผํ‹ฐ๋Š” MDN์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

location ๊ฐ์ฒด

  • ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ์— ์žˆ๋Š” URL์„ ์ฝ๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ์ฒด์ด๋‹ค.

  • location์˜ ์ฃผ์š” ๋ฉ”์„œ๋“œ์™€ ํ”„๋กœํผํ‹ฐ๋Š” MDN์—์„œ ์ž์„ธํžˆ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    • location.href

    • location.host

    • location.port

    • location.replace(url)

    • location.assign(url)

history ๊ฐ์ฒด

  • ๋ธŒ๋ผ์šฐ์ €์˜ ์„ธ์…˜ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ์ฒด์ด๋‹ค. ์ฆ‰, ํƒญ์—์„œ ๋ฐฉ๋ฌธํ–ˆ๋˜ ํŽ˜์ด์ง€๋‚˜, ํ˜„์žฌ ํŽ˜์ด์ง€์˜ ๊ธฐ๋ก์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

  • history.length

  • history.go(integer)

  • history.back(interger)

  • history.forward(integer)

  • ์œ ์ €๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ธŒ๋ผ์šฐ์ €๋‚˜ OS ์ฆ‰, user agent์— ๋Œ€ํ•œ ์ƒํƒœ๋‚˜ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค.

  • navigator.userAgent

  • navigator.languages

  • navigator.onLine

  • navigator.getBattery()

์ถœ์ฒ˜

Last updated