자주 사용되는 노드들은 다음과 같다
DOCUMENT_NODE (e.g., window.document)
ELEMENT_NODE(e.g., <body>, <a>)
ATTRIBUTE_NODE(e.g., class="c")
TEXT_NODE(e.g, HTML문서에 존재하는 텍스트 캐릭터)
DOCUMENT_FRAHMENT_NODE(e.g., document.createDocumentFragment())
DOCUMENT_TYPE_NODE(e.g, <!DOCTYPE html>)
위의 노드 프로퍼티들은 정적인 변수이며, 특정 노드 객체 타입에 대응되는 숫자를 저장하고 있다.
ELEMENT_NODE(i.e., HTML *Element) | 1 |
ATTRIBUTE_NODE(i.e., Attr) | 2 |
TEXT_NODE(i.e., Text) | 3 |
CDATA_SECTION_NODE | 4 |
ENTITY_REFERENCE_NODE | 5 |
ENTITY_NODE | 6 |
PROCESSING_INSTRUCTINO_NODE | 7 |
COMMENT_NODE | 8 |
DOCUMENT_NODE(i.e., HTMLDocument) | 9 |
DOCUMENT_TYPE_NODE(i.e., DocumentType) | 10 |
DOCUMENT_FRAGEMENT_NODE(i.e., DocumentFragment) | 11 |
NOTATION_NODE | 12 |
DOM 명세서에선는 Node, Element, Text와 같은 노드들을 의미론상으로는 인터페이스들로 표기하고 있다. 하지만 js에서 Node, Element와 같은 이름들은 노드들을 생성하기 위한 생성자의 이름이기도 하다. 이 책(DOM Enlightement)에서는 이런 인터페이스들을 객체 또는 생성자로 언급 한다.
ATTRIBUTE_NODE는 사실 실제 트리의 일부분이 아니다. attribute node는 실제 DOM 트리에 존재하지 않는 엘리먼트 노드의 하위 노드이다. ATTRIBUTE_NODE는 DOM4에서 deprecated되었다.
HTML문서에 존재하는 코멘트는 코멘트 노드이며 텍스트노드와 비슷하다.