DOM

1.2 Node Object Types

Posted by yunki kim on August 18, 2021

  자주 사용되는 노드들은 다음과 같다

    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문서에 존재하는 코멘트는 코멘트 노드이며 텍스트노드와 비슷하다.