언어 및 도구들 공부/Javascript

querySelectorAll 로 골라온 객체의 타입

Dr.Mlem 2024. 9. 1. 23:07

Q.

querySelectorAll 메소드로 골라온 객체는 어떤 타입의 객체야?

 

A.

querySelectorAll 메소드로 골라온 객체는 NodeList 타입의 객체입니다.

 

NodeList란?

 

NodeList는 노드(Node)들의 목록을 나타내는 객체입니다.
Node는 HTML 요소(Element), 텍스트 노드, 주석 등 DOM 트리의 구성 요소를 의미합니다.
querySelectorAll은 주어진 CSS 선택자와 일치하는 모든 요소들을 NodeList 객체에 담아 반환합니다.

 

NodeList의 특징

 

유사 배열 객체: NodeList는 배열과 유사한 구조를 가지고 있어 length 속성을 통해 항목 개수를 확인하고, 인덱스를 사용하여 각 항목에 접근할 수 있습니다.
live collection: NodeList는 DOM의 변경 사항을 실시간으로 반영하는 "live collection"입니다. 즉, DOM 구조가 변경되면 NodeList의 내용도 자동으로 업데이트됩니다.
배열 메서드 사용 제한: NodeList는 배열이 아니므로 forEach, map, filter 등의 배열 메서드를 직접 사용할 수 없습니다. 하지만 Array.from()이나 for...of 루프를 사용하여 배열로 변환하거나 순회할 수 있습니다.

 

JavaScript


const paragraphs = document.querySelectorAll('p'); // 모든요소를 선택

console.log(paragraphs); // NodeList 객체 출력
console.log(paragraphs.length); // NodeList의 길이 (항목 개수) 출력
console.log(paragraphs[0]); // 첫 번째 요소 출력

 

// NodeList 순회 (forEach 사용)
Array.from(paragraphs).forEach(paragraph => {
console.log(paragraph.textContent);
});

 

// NodeList 순회 (for...of 루프 사용)
for (const paragraph of paragraphs) {
console.log(paragraph.textContent);
}

 

주의 사항:

querySelectorAll이 아무 요소도 찾지 못하면 빈 NodeList를 반환합니다.
NodeList는 DOM의 변경 사항을 실시간으로 반영하므로,

NodeList를 순회하는 동안 DOM 구조가 변경되면 예기치 않은 결과가 발생할 수 있습니다.

 

핵심:

querySelectorAll 메서드는 NodeList 객체를 반환합니다.

NodeList는 유사 배열 객체이지만 배열 메서드를 직접 사용할 수 없으므로,

Array.from()이나 for...of 루프를 사용하여 순회해야 합니다.

NodeList는 live collection이므로 DOM 변경 사항에 주의해야 합니다.

 

 

 

querySelector 와의 차이점

 

  • querySelector 메소드는 CSS 선택자와 일치하는 첫 번째 요소를 찾아 Element 객체를 반환합니다.
  • 요소를 찾지 못하면 null을 반환합니다.( querySelector 의 경우에)
  • querySelectorAll과 달리 NodeList가 아닌 단일 Element 객체를 반환하므로, 배열 메서드를 사용할 필요 없이 바로 해당 요소에 접근하고 조작할 수 있습니다.

 

'언어 및 도구들 공부 > Javascript' 카테고리의 다른 글

자바스크립트에서의 position?  (0) 2024.09.02
setAttribute  (0) 2024.09.02
자바스크립트 beforebegin, afterbegin, afterend, beforeend  (0) 2024.09.01
previousElementSibling  (0) 2024.09.01
별찍기 문제  (0) 2024.08.31