Всем известно, какие DOM-селекторы, такие как document.getElementByID(...)
и document.querySelector(...)
, делают и как вы можете использовать его с классами, атрибутами, идентификатором и т. Д.Как работает 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 На самом деле я так не думаю. Это довольно простая функция, и, скорее всего, я буду реализован по-настоящему похожим в основных браузерах. –