先看一段最简单的HTML代码:html
<html> <head> <title>Document Example</title> </head> <body> <h1>An HTML Document</h1> <div> <p>Text</p> </div> </body> </html>
它的DOM结构能够表示成:node
整个是一个树状结构,在树状图里面是否是有个“节点”,也就是‘node’的概念?
是的,图中的每个框框就是一个Node对象。'<html>....</html>'是一个node, '<div>...</div>'是一个node, 咱们放在<p>里面的文字'Text'也是一个node.es6
再来看一张抽象了的图:spa
上面这张图,表示了Node, Element, HTMLElment等的继承关系。因此其实这个时候应该就很清楚它们之间的关系了。Document, Element都是不一样类型的node, HTMLElment又是一种类型的Element, 而咱们最熟悉的HTMLDivElment, HTMLInputElement等都是不一样类型的HTMLElment.code
接下来看一张图,图片来自MDNhtm
图上的常量都是定义在Node类上的,因此能够直接经过Node.DOCUMENT_NODE引用。每个node都会有一个nodeType的变量来标识它是哪种类型的node。例以下图所示:对象
到此为止,咱们应该弄清楚node,Node以及HTMLElement的相关概念了。
ps: 文章里把Node叫作‘类’,只是为了更好的理解它的概念,由于在在es6以前,ECMAScript并无‘Class’这个东西。继承