OBJECT MODEL

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

BOM

BOM(Browser Object Model)์€ ์›น๋ธŒ๋ผ์šฐ์ €์˜ ์ฐฝ์ด๋‚˜ ํ”„๋ ˆ์ž„์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•ด์ฃผ๋Š” ์ˆ˜๋‹จ์ด๋‹ค. window ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.

window ๊ฐ์ฒด

window ๊ฐ์ฒด๋Š” DOM์„ ํฌํ•จํ•œ ๋ธŒ๋ผ์šฐ์ €์˜ ์ฐฝ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ๊ฐ์ฒด, ์ „์—ญ ํ•จ์ˆ˜, ์ „์—ญ ๋ณ€์ˆ˜๋“ค์€ ์ž๋™์œผ๋กœ window๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋œ๋‹ค. window๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ๋Š” ์ „์—ญ ํ•จ์ˆ˜์ด๋ฉฐ, window ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋Š” ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค. DOM์˜ ์š”์†Œ๋“ค๋„ ๋ชจ๋‘ window๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋œ๋‹ค. ECMAScript์˜ global ๊ฐ์ฒด๋Š” ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์ด๋ฆ„์ด ๋‹ค๋ฅด๊ณ , ์—ญํ• ์ด ๋‹ค๋ฅด๋‹ค. ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ window ๊ฐ์ฒด๋Š” ECMAScript์˜ ์ „์—ญ๊ฐ์ฒด์ด๋ฉด์„œ ๋™์‹œ์— ์›น๋ธŒ๋ผ์šฐ์ €์˜ ์ฐฝ์ด๋‚˜ ํ”„๋ ˆ์ž„์„ ์ œ์–ดํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

Location ๊ฐ์ฒด

Location ๊ฐ์ฒด๋Š” ๋ฌธ์„œ์˜ ์ฃผ์†Œ์™€ ๊ด€๋ จ๋œ ๊ฐ์ฒด๋กœ window ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์ด๋‹ค. URL ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์ค€๋‹ค.

> location
ancestorOrigins: DOMStringList {length: 0}
assign: ฦ’ assign()
hash: ""
host: "display.cjmall.com"
hostname: "display.cjmall.com"
href: "http://display.cjmall.com/m/homeTab/main?hmtabMenuId=000002&rPIC=Oclock"
origin: "http://display.cjmall.com"
pathname: "/m/homeTab/main"
port: ""
protocol: "http:"
reload: ฦ’ reload()
replace: ฦ’ ()
search: "?hmtabMenuId=000002&rPIC=Oclock"
toString: ฦ’ toString()
valueOf: ฦ’ valueOf()
Symbol(Symbol.toPrimitive): undefined
__proto__: Location

Location ๊ฐ์ฒด ์†์„ฑ

href

์›น์‚ฌ์ดํŠธ ์ „์ฒด ์ฃผ์†Œ

protocal

ํ”„๋กœํ† ์ฝœ

hostname

ํ˜ธ์ŠคํŠธ๋ช…

pathname

ํ•ด๋‹น ์›น ๋ฌธ์„œ ๊ฒฝ๋กœ

hash

ํ•ด๋‹น ์›น๋ฌธ์„œ๋‚ด ํ‘œ์‹

ํ˜„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์›น๋ธŒ๋ผ์šฐ์ €์˜ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ฐ์ฒด์ด๋‹ค. ์ฃผ๋กœ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ €์˜ ์ข…๋ฅ˜, ๋ฒ„์ „์„ ํŒŒ์•…ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

Navigator
appCodeName: "Mozilla"
appName: "Netscape"
appVersion: "5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
connection: NetworkInformation {onchange: null, effectiveType: "4g", rtt: 50, downlink: 10, saveData: false}
cookieEnabled: true
doNotTrack: null
geolocation: Geolocation {}
hardwareConcurrency: 4
language: "ko-KR"
languages: (4) ["ko-KR", "ko", "en-US", "en"]
maxTouchPoints: 1
mediaCapabilities: MediaCapabilities {}
mediaSession: MediaSession {metadata: null, playbackState: "none"}
mimeTypes: MimeTypeArray {length: 0}
onLine: true
permissions: Permissions {}
platform: "MacIntel"
plugins: PluginArray {length: 0}
product: "Gecko"
productSub: "20030107"
sendBeacon: ฦ’ sendBeacon()
userActivation: UserActivation {hasBeenActive: true, isActive: true}
userAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
vendor: "Google Inc."
vendorSub: ""
webkitPersistentStorage: DeprecatedStorageQuota {}
webkitTemporaryStorage: DeprecatedStorageQuota {}
__proto__: Navigator

Navigator ๊ฐ์ฒด ์†์„ฑ

appCodeName

์›น๋ธŒ๋ผ์šฐ์ € ์ฝ”๋“œ์ด๋ฆ„

appName

์›น๋ธŒ๋ผ์šฐ์ €๋ช… (IE : Microsoft Internet Explorer, ํŒŒ์ด์–ดํญ์Šค, ํฌ๋กฌ : Nescape)

appVersion

์›น๋ธŒ๋ผ์šฐ์ € ๋ฒ„์ „

language

์›น๋ธŒ๋ผ์šฐ์ € ์‚ฌ์šฉ์–ธ์–ด

platform

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋Š” ์šด์˜์ฒด์ œ์— ๋Œ€ํ•œ ์ •๋ณด

userAgent

์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— ์ ‘์†ํ•  ๋•Œ ๋ธŒ๋ผ์šฐ์ €์˜ ์ข…๋ฅ˜, ๋ฒ„์ „, ์ฝ”๋“œ์ด๋ฆ„ ๋“ฑ ์„œ๋ฒ„์— ์ „๋‹ฌ๋˜๋Š” ๋ชจ๋“ ์ •๋ณด

plugins

ํ˜„์žฌ ์‹œ์Šคํ…œ์— ์„ค์น˜๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ •๋ณด

mimeTypes

์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›ํ•˜๋Š” MIME ํ˜•์‹์— ๋Œ€ํ•œ ์ •๋ณด

DOM

DOM(Document Object Model), ๋ฌธ์„œ๊ฐ์ฒด๋ชจ๋ธ์€ HTML๋ฌธ์„œ๋‚˜ XML๋ฌธ์„œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ผ์ข…์˜ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. ๋ฌธ์„œ ๋‚ด์˜ ๋ชจ๋“  ์š”์†Œ์˜ ๋ชฉ์ ๊ณผ ํŠน์ง•์„ ์ •์˜ํ•˜๊ณ , ๊ฐ๊ฐ์˜ ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.

  • DOM์€ ์›น๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐ์ฒด ์ง€ํ–ฅ ํ‘œํ˜„์ด๋ฉฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•ด ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • DOM์€ ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

DOM ์š”์†Œ ์„ ํƒ

  • tag name์„ ์ด์šฉํ•œ ์„ ํƒ

getElementsByTagName : tagname์„ ์ด์šฉํ•ด HTML์š”์†Œ ์„ ํƒ

var selectedItem = document.getElementsByTagName("li"); //<li> ์š”์†Œ ์„ ํƒ
for(var i=0;i<selectedItem.length;i++){
  selectedItem.item(i).style.color="red";
}

item() ๋ฉ”์†Œ๋“œ๋Š” ํ•ด๋‹น HTML ๊ฐ์ฒด ์ง‘ํ•ฉ์—์„œ ์ „๋‹ฌ๋ฐ›์€ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

HTML ์š”์†Œ์˜ style property๋ฅผ ์ด์šฉํ•˜๋ฉด, ํ•ด๋‹น ์š”์†Œ์˜ CSS ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

  • id๋ฅผ ์ด์šฉํ•œ ์„ ํƒ

getElementById() : ์•„์ด๋””๋ฅผ ์ด์šฉํ•˜์—ฌ HTML ์š”์†Œ๋ฅผ ์„ ํƒ

var selectedItem = document.getElementById("even");
selectedItem.styel.color = "red";

์ด๋•Œ ํ•ด๋‹น ์•„์ด๋””๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์š”์†Œ ์ค‘์—์„œ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ ๋‹จ ํ•˜๋‚˜๋งŒ์„ ์„ ํƒํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” tagname์ด๋‚˜ class์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

  • Class๋ฅผ ์ด์šฉํ•œ ์„ ํƒ

getElementByClassName : ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ด์šฉํ•˜์—ฌ HTML ์š”์†Œ ์„ ํƒ

var selectedItem = document.getElementByClassName("odd");
for(var i=0;i<selectedItem.length;i++){
  selectedItem.item(i).style.color="red";
}
  • CSS selector๋ฅผ ์ด์šฉํ•œ ์„ ํƒ

querySelectorAll() : CSS ์„ ํƒ์ž(์•„์ด๋””, ํด๋ž˜์Šค, ์†์„ฑ, ์†์„ฑ๊ฐ’ ๋“ฑ)๋ฅผ ์ด์šฉํ•˜์—ฌ HTML์š”์†Œ ์„ ํƒ

var selectedItem = document.querySelectorAll("li.odd");
for(var i=0;i<selectedItem.length;i++){
  selectedItem.item(i).style.color="red";
}
  • HTML ๊ฐ์ฒด ์ง‘ํ•ฉ(object collection)์„ ์ด์šฉํ•œ ์„ ํƒ

var title = document.title; // <title> ์š”์†Œ๋ฅผ ์„ ํƒํ•จ.

document.write(title);

DOM ์š”์†Œ ๋‚ด์šฉ ๋ณ€๊ฒฝ

DOM์„ ์ด์šฉํ•˜์—ฌ DOM ์š”์†Œ์˜ ๋‚ด์šฉ(content)๋‚˜ ์†์„ฑ ๊ฐ’์„ ์†์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

DOM ์š”์†Œ์˜ ๋‚ด์šฉ์„ ๋ฐ”๊พธ๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ innerHTML property ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋˜ํ•œ, DOM ์š”์†Œ์˜ ์†์„ฑ ์ด๋ฆ„์„ ์ด์šฉํ•˜๋ฉด ์†์„ฑ๊ฐ’์„ ๋ฐ”๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

var str = document.getElementById("text");
str.innerHTML = "๋ฌธ์žฅ๋ฐ”๊พธ๊ธฐ";

HTML ์š”์†Œ์˜ ์†์„ฑ ์ด๋ฆ„์„ ์ด์šฉํ•˜์—ฌ ์†์„ฑ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

var link = document.getElementById("link");
str.href = "/javascript/intro";
link.innerHTML = "ํ•ด๋‹น ์š”์†Œ์˜ ๋‚ด์šฉ ๋ณ€๊ฒฝํ•˜๊ธฐ";

jQuery

jQuery๋Š” DOM์„ ๋‚ด๋ถ€์— ๊ฐ์ถ”๊ณ  ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์›นํŽ˜์ด์ง€๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ๋„๊ตฌ

Last updated

Was this helpful?