Search

DOM API

Created time
2025/03/20 08:24
Last edited time
2025/03/21 03:40
Status
Done
tag

들어가기에 앞서

하단의 참고한 자료를 바탕으로 개인의 생각을 정리한 글이므로 오류가 있을 수 있습니다.
오류에 대한 피드백은 언제든지 환영합니다. 부디 댓글로 알려주시길 바랍니다. 감사합니다.

Document Object Model

XML, HTML같은 마크업 언어로 작성된 문서를 Javascript나 Python 과 같은 프로그래밍언어로 조작이 가능하게 해주는 인터페이스.
DOM은 프로그래밍 언어와 독립적이며, 계층적인 노드 트리 구조를 가지고 있다.

왜 DOM이 필요한가

Javascript는 그 자체로는 웹페이지를 동적으로 만들 수 없다. 마크업 언어에는 요소에 접근 가능한 인터페이스가 없기 때문이다. Web API인 DOM이 Javascript와 마크업 언어의 중간 다리 역할을 하여 마크업 언어의 요소를 제어를 가능하게 함으로써 웹페이지를 동적으로 작동하게 해준다.

왜 DOM은 계층적인 구조인가

명확한 계층구조로 인해 특정 노드에 대해 접근,추가,수정,삭제가 간편하며 각 노드들의 부모 자식 관계, 형제 관계를 빠르게 파악할 수 있어 편리하다.
또한, 하위 요소에서 발생한 이벤트가 상위 요소로 전파되는 이벤트 버블링, 반대로 상위 요소에서 발생한 이벤트가 하위 요소로 전파되는 이벤트 캡처링이 계층적인 구조에서 유리하기 때문이다.

참고

프론트엔드 개발자 면접 단골 질문 2 | DOM의 개념
원하시는 기업에 꼭 합격하시길 기원하겠습니다 :) 면접 연습에 스크립트가 필요하신 분들은 아래를 참고해주세요. **DOM의 개념을 설명해주세요** HTML이나 XML 같은 마크업 언어로 작성된 문서를 자바스크립트와 같은 프로그래밍 언어가 조작할 수 있도록 하는 인터페이스를 의미합니다. DOM은 계층적 구조를 가진 노드 트리로 구성됩니다. **DOM은 왜 필요한가요?** 동적인 웹 페이지를 구현하려면 자바스크립트와 같은 프로그래밍 언어가 문서에 접근하고, 제어할 수 있는 수단이 있어야 합니다. 하지만, 마크업 언어로 작성된 문서에는 이러한 수단이 없죠. TV는 있지만, TV를 조작할 수 있는 리모콘이 없는 것과 같은 이치라고 볼 수 있습니다. 따라서, 문서에 접근하고, 제어할 수 있는 수단인 DOM이 필요합니다. **DOM을 통해 어떤 동작을 할 수 있는지 예를 들어주세요** button element가 클릭되었을 때, 특정 함수를 호출하도록 Event Handler를 추가할 수 있고, 웹 페이지 내에 새로운 요소를 추가하거나, 삭제, 수정할 수 있습니다. **DOM은 왜 계층적 구조로 표현하는지 설명해주세요** 계층적 구조에서는 노드들 간의 관계가 부모, 자식, 형제 등으로 명확하게 정의됩니다. 이는 노드의 추가, 제거, 이동 작업을 쉽게 할 수 있도록 도와줍니다. 또한, 이벤트가 발생한 요소로부터 이벤트가 올라가는 이벤트 버블링, 반대로 이벤트가 내려가는 이벤트 캡처링 동작은 계층적 구조에서 효율적으로 동작하기 때문에, DOM을 계층적 구조로 표현하는 것입니다.