The Document Object Model

jQuery 561 , React 7,897 and plain document.querySelector() all end in calls on DOM objects. A clear model of those objects explains why childNodes holds "extra" text nodes, why window accepts event listeners like a <button>, and why reading one innocent property can freeze a page for a second.

Subsections