Jeder weiß, was DOM Selektoren wie document.getElementByID(...)
und document.querySelector(...)
tun und wie Sie es mit Klassen, Attributen, ID und so weiter verwenden können.Wie funktioniert querySelector unter der Haube?
Aber ich konnte nicht finden, wie es unter der Haube funktioniert (ich kann perf test comparisons finden, aber ich interessiere mich für die Theorie). Ich weiß, dass die HTML-Seite geladen ist, vom Browser analysiert und die DOM-Struktur erstellt wird. Aber wie durchläuft jeder der Selektoren den DOM-Baum, um die Elemente zu finden.
Ich habe in einem spec for parsing algorithm einen Blick nahm und wirklich schön explanation how Browsers work, lesen, aber es gibt auch ausgezeichnete Erklärung über HTML, CSS Parsen und fließen wodurch es nicht Erklärung nicht geben, wie jeder dieser Selektoren diesen Baum durchläuft die Elemente zu finden.
Ich gehe davon aus, dass es so etwas wie .black
oder span
finden muss zu durchqueren den ganzen Baum in Ordnung, aber #id
finden es einige zusätzliche Datenstruktur durchlaufen und somit kann es viel schneller. Bitte schreibe deine Annahmen nicht, ich suche nach konkreten Kenntnissen mit Backup zur Spezifikation oder Implementierung in manchen Browsern.
Ich denke, das wäre besser bei http://programmers.stackexchange.com – spender
Das ist ein Implementierungsdetail, und wird von der Maschine, die Sie verwenden, variieren. Sie müssen den Quellcode verschiedener Implementierungen lesen, wenn Sie das wissen wollen. Siehe http://en.wikipedia.org/wiki/List_of_ECMAScript_engines als Ausgangspunkt. – slashingweapon
@slashingweapon Ich denke nicht wirklich so. Dies ist ein ziemlich grundlegendes Feature und wahrscheinlich werde ich in den meisten Browsern sehr ähnlich umgesetzt. –