본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다.
39.0 DOM이란?
- HTML 문서의 계층적 구조와 정보를 표현하며 이를 제어할 수 있는 API
- 프로퍼티와 메서드를 제공하는 트리 자료구조
39.1 노드
39.1.1 HTML 요소와 노드 객체
- HTML요소 : HTML 문서를 구성하는 개별적인 요소
- 렌더링 엔진에 의해 파싱되어 DOM을 구성하는 요소 노드 객체로 변환
- HTML 요소의 어트리뷰트는 어트리뷰트 노드로, 텍스트 콘텐츠는 텍스트 노드로 변환
- 다른 HTML 요소를 포함할 수 있어 중첩 관계를 가질 수 있음
- 계층적인 부자 관계가 형성
트리 자료구조
- 트리 자료구조
- 노드들의 계층 구조로 이루어진 자료구조
- 부모 노드와 자식 노드로 구상되어 노드간의 계층적 구조를 표현
- 루트 노드: 최상위 노드
- 부모 노드가 없음
- 0개 이상의 자식 노드를 가짐
- 리프 노드 : 자식 노드가 없는 노드
- 노드 객체들로 구성된 트리 자료구조를 DOM이라고 함(DOM 트리)
39.1.2 노드 객체의 타입
문서 노드
- DOM 트리의 최상위에 존재하는 루트 노드로서 document 객체를 가리킴
- 브라우저가 렌더링한 HTML 문서 전체를 가리키는 객체
- window의 document 프로퍼티에 바인딩
- HTML 문서당 document 객체는 유일
- DOM 트리의 노드들에 접근하기 위한 진입점(entry point) 역할
요소 노드
- HTML 요소를 가리키는 객체
- HTML 요소 간의 중첩에 의해 부자 관게를 가짐
- 이를 통해 정보를 구조화
어트리뷰트 노드
- HTML 요소의 어트리뷰트를 가리키는 객체
- 요소 노드와 연결되어 있음
- 어트리뷰트 노드에 접근하려면 요소 노드에 접근해야 함
텍스트 노드
- HTML 요소의 텍스트를 가리키는 객체
- 자식 노드를 가질 수 없는 리프 노드
- 텍스트 노드에 접근하려면 요소 노드에 접근해야 함
39.1.3 노드 객체의 상속 구조
- 노드 객체는 ECMAScript 사양에 정의된 표준 빌트인 객체가 아니라 브라우저 환경에서 추가적으로 제공하는 호스트 객체
- 자바스크립트 객체이므로 프로토타입에 의한 상속 구조를 가짐
- DOM은 HTML 문서의 계층적 구조와 정보를 표현하고 노드 타입에 따라 필요한 기능을 API로 제공
- 이 DOM API를 통해서 HTML 구조, 내용, 스타일을 동적으로 조작 가능
'programming study > JavaScript' 카테고리의 다른 글
39장. DOM(3) (0) | 2022.05.09 |
---|---|
39장. DOM(2) (0) | 2022.05.08 |
38장. 브라우저의 렌더링 과정(2) (0) | 2022.05.06 |
38장. 브라우저의 렌더링 과정(1) (0) | 2022.05.05 |
37장. Set과 Map(2) (0) | 2022.05.04 |