document가 js요소가 아닌 브라우저 환경에서 제공되는 것이기 때문
웹 개발에서 사용되는 document 객체
는 브라우저에서 제공하는 window 객체
의 한 요소window.document
객체를 DOM
이라 분류
Web API에는 DOM
, BOM
, ... 등이 있음
브라우저에서 제공하는 이 모든 것을 통틀어 Web API
라고 함Web API
는 JS 기능은 아니지만 JS 등을(JS로만 제어가 가능한 건 아님) 통해 제어 할 수 있도록 브라우저가 제공함
ex) window.location
, window.navigator
, window.screen
, window.history
웹사이트 접속하면 브라우저가 HTML 문서 읽음
↓
그리고 해석 (Parsing)
함
↓
그 결과 DOM
이 만들어짐 (DOM은 트리 전체를 말함)
각각을 구성하는 요소는 Node
라고 함
js로 웹페이지의 요소들을 제어할 수 있는 이유는 각각의 Node가 모두 API
이기 때문
(API는 간단하게 말하면 원하는 걸 주문하면 원하는 게 나오는 것)
HTML 문서에 대한 모델 구성
: 브라우저는 HTML 문서 로드 후 해당 문서에 대한 모델을 메모리에 생성 (DOM tree)
HTML 문서 내의 각 요소에 접근/수정
: DOM은 모델 내의 각 객체에 접근하고 수정할 수 있는 프로퍼티와 메소드 제공 (DOM이 수정되면 브라우저가 변경해줌)
DOM tree
Document Node (문서 노드)
: 트리의 최상위
ex) <!DOCTYPE html>
Element Node (요소 노드)
: html 요소
ex) <html>
, <head>
, <body>
, <div>
Attribute Node
: html 요소의 attribute
ex) class=" "
, id=" "
Text Node
: html 요소의 텍스트, 트리 최하단