document.getElementByID(...)
및 document.querySelector(...)
과 같은 DOM 선택기는 누구나 알고 있으며 클래스, 속성, ID 등과 함께 사용할 수있는 방법을 알고 있습니다.후드에서 querySelector는 어떻게 작동합니까?
하지만 두포에서 어떻게 작동하는지 찾을 수 없었습니다 (나는 perf test comparisons을 찾을 수 있지만 이론에 관심이 있습니다). html 페이지가 브라우저에서 파싱되어로드되고 DOM 트리가 구성된다는 것을 알고 있습니다. 하지만 각 선택기는 요소를 찾기 위해 DOM 트리를 어떻게 지나치 는가?
나는 spec for parsing algorithm을보고 실제로는 explanation how Browsers work을 읽었지만, HTML, CSS 파싱 및 렌더링 흐름에 대한 훌륭한 설명을 제공합니다.이 선택기가이 트리를 통과하여 요소를 찾는 방식을 설명하지 않습니다.
나는 .black
또는 span
뭔가를 찾기 위해이 전체 트리를 통과 할 수 있지만, 훨씬 빠르게 그것을 만드는 몇 가지 추가 데이터 구조를 통과함으로써 할 수있다 #id
을 찾을 필요가 있다고 가정합니다. 귀하의 가정을 쓰지 말고, 일부 브라우저의 사양이나 구현에 대한 구체적인 지식을 찾고 있습니다.
나는 이것이 http://programmers.stackexchange.com – spender
에 더 잘 어울릴 것이라고 생각합니다. 구현 세부 사항이며 사용중인 엔진에 따라 다릅니다. 알고 싶으면 다양한 구현의 소스 코드를 읽어야합니다. http://en.wikipedia.org/wiki/List_of_ECMAScript_engines를 참조하십시오. – slashingweapon
@slashingweapon 나는 그렇게 생각하지 않는다. 이것은 아주 기본적인 기능이며, 아마도 주요 브라우저에서 실제로 구현 될 것입니다. –