Reputation: 7801
When describing DOM trees, most sources I found online describe the DOM tree as consisting of nodes.
I found this incredibly confusing, as I thought the DOM tree was actually just a tree of JS objects built into the Browser Runtime Environment.
My questions are as follows:
Upvotes: 0
Views: 177
Reputation: 664206
Is the DOM tree really just consisting of ECMAScript objects?
No. The Document Object Model describes generic objects, specifying how their attributes and methods model a document. It does not say anything about how those objects are constructed or what language they are implemented in. You'll find DOM implementations written in C++, Rust, Java, JavaScript, and probably more.
How are these objects connected to create the tree? E.g., is there a children property on each?
Not all objects in the DOM are tree nodes, but for those that are, yes: childNodes
and parentNode
form a tree. The nodeName
, nodeValue
and attributes
model the contents of the tree.
Is Node an actual object, to which other objects are prototype linked?
Yes, the ECMAScript bindings for the DOM (via WebIDL) stipulate that nodes are represented as ECMAScript objects with a prototype inheritance chain for interfaces like Node
.
I thought the DOM tree was actually just a tree of JS objects built into the Browser Runtime Environment.
They might be native JS objects, but most commonly they are host objects that wrap/proxy the builtin DOM implementation of the browser. The wrappers are often constructed on the spot by getters only when they are accessed, not already created when the page is loaded.
Upvotes: 3