๐Ÿ’ป ๊ณต๋ถ€ (IT)/๐Ÿ‘ฉ๐Ÿผโ€๐Ÿ’ป ๊ฐœ๋…

[JavaScript] DOM, BOM

zoo-it 2022. 5. 30. 00:15

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

 

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

 

 

BOM (Browser Object Model, ๋ธŒ๋ผ์šฐ์ € ๊ฐ์ฒด ๋ชจ๋ธ)
  • ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋Œ€ํ•œ ๋ชจ๋“  ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋กœ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ฐ€์ง„ ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ๊ฐ์ฒดํ™”ํ•˜์—ฌ ๊ด€๋ฆฌ
  • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์—ด๋ฆฌ๋ฉด ์ตœ์ƒ์œ„ ๊ฐ์ฒด์ธ Window๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ƒ์„ฑ๋œ ํ›„, ํ•˜์œ„ ์š”์†Œ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ์ฒด ์ƒ์„ฑ
  • ๋ธŒ๋ผ์šฐ์ €์˜ ์ •๋ณด๋ฅผ ๋ณ€ํ˜•ํ•˜์—ฌ ์›น ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์˜ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ
// BOM ํ™œ์šฉ ์˜ˆ์‹œ
console.log(navigator.userAgent);
location.href = 'www.naver.com';
history.back();
window.close();
  1. navigator: ๋ธŒ๋ผ์šฐ์ € ๋ฐ ๋ธŒ๋ผ์šฐ์ €์˜ ํ™˜๊ฒฝ ์ •๋ณด๋ฅผ ์ œ๊ณต
  2. window: ์ตœ์ƒ์œ„ ๊ฐ์ฒด๋กœ, ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์ด ์—ด๋ฆด๋•Œ๋งˆ๋‹ค ์ƒ์„ฑ
  3. document: ํ˜„์žฌ ๋ฌธ์„œ์— ๋Œ€ํ•œ ์ •๋ณด ์ œ๊ณต
  4. location: ํ˜„์žฌ ๋ธŒ๋ผ์šฐ์ €์— ํ‘œ์‹œ๋œ Html ๋ฌธ์„œ์˜ ์ฃผ์†Œ๋ฅผ ์–ป๊ฑฐ๋‚˜ ์ƒˆ ๋ฌธ์„œ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ์‚ฌ์šฉ
  5. history: ๋ธŒ๋ผ์šฐ์ €์˜ ํžˆ์Šคํ† ๋ฆฌ ์ •๋ณด์™€ ๋ฌธ์„œ ์ƒํƒœ ๋ชฉ๋ก ์ œ๊ณต
  6. screen: ํ™”๋ฉด์— ๋Œ€ํ•œ ์ •๋ณด ์ œ๊ณต

 

DOM (Document Object Model, ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ)
  • ๋ฌธ์„œ ๊ฐ์ฒด: Html ๋ฌธ์„œ์˜ ํƒœ๊ทธ๋“ค์„ JavaScript๊ฐ€ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” Object๋กœ ๋งŒ๋“  ๊ฒƒ
  • Document์™€ ๊ด€๋ จ๋œ ๊ฐ์ฒด์˜ ์ง‘ํ•ฉ์œผ๋กœ, ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ Html ํŽ˜์ด์ง€๋ฅผ ์ธ์‹ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • Tree ํ˜•์‹์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, Html ํƒœ๊ทธ๋ฅผ ๋™์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Œ
 // DOM ํ™œ์šฉ ์˜ˆ์‹œ
var test = document.getElementsByTagName("test");
document.body.style.background = 'red';

// (1) ์ƒ์„ฑ
document.createElement('tag');

// (2) ์„ ํƒ
document.getElementsById('test');

// (3) ์ˆ˜์ •
element.innerText = 'update';
element.style.background = 'black';

// (4) ์‚ญ์ œ
document.removeChild('element');
  1. ๋ฌธ์„œ๋…ธ๋“œ (Document Node): ํŠธ๋ฆฌ์˜ ์ตœ์ƒ์œ„์— ์กด์žฌ, Html ๋ฌธ์„œ ์ „์ฒด๋ฅผ ์˜๋ฏธ
  2. ์š”์†Œ๋…ธ๋“œ (Element Node): ์†์„ฑ ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋…ธ๋“œ๋กœ, ํƒœ๊ทธ๋ฅผ ์˜๋ฏธ (ex) <p>, <div>)
  3. ์†์„ฑ๋…ธ๋“œ (Attribute Node): ํƒœ๊ทธ ์•ˆ์˜ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์˜๋ฏธ (ex) name, value)
  4. ํ…์ŠคํŠธ๋…ธํŠธ (Text Node): ํƒœ๊ทธ ๋‚ด ํ…์ŠคํŠธ๋ฅผ ์˜๋ฏธ (ex) <span>test</span>)

 

DOM๊ณผ BOM์˜ ์ฐจ์ด
DOM์€ Document, ์ฆ‰ ๋ˆˆ์œผ๋กœ ๋ณด์ด๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋Œ€ํ•œ ์ œ์–ด ๋ณ€๊ฒฝ
BOM์€ Document๊ฐ€ ์•„๋‹Œ Window ์ œ์–ด ๋ณ€๊ฒฝ