document一回车,他就代表整个文档;Document一回车,他代表的是一个函数,什么函数需要首字母大写?构造函数吧,只不过这个Document有点特殊,你不能new他,这时系统留给自己new的。那这个构造函数对咱们有什么帮助呢?
构造函数上面会有一个原型,能够给生产数来的构造函数使用,如果Document作为document的原型的话,说明在Document的prototype上,加上一个属性abc,并且属性值也是abc的话,那么document访问到abc吧!
这个dom结构树代表的就是一些列的继承关系。
Document不是document的直接的构造函数,跟那没关系。其实document的构造函数是HTMLDocument,那这个Document跟这个document有什么关系呢?
HTMLDocument.prototype就是document的原型,HTMLDocument.prototype等于一个对象,这个对象上面有很多属性和方法,这些属性和方法让document直接受益了,然后这个对象上面还有一个属性__proto__,这个__proto__会指向他的原型,他的原型就是Document.prototype。
<script type="text/javascript">
HTMLDocument.prototype = {
__proto__ : Document.prototype
}
</script>
所以现在能看出来点什么关系吗?
Document.prototype是HTMLDocument.prototype的原型吧,他们之间有逐步继承的关系,这是一个原型链,首先,document继承自HTMLDocument.prototype,然后HTMLDocument.prototype继承自Document.prototype,所以刚才直接在Document.prototype写的东西也能受益到document。
document -----à HTMLDocument.prototype ------à Document.prototype
现在HTMLDocument.prototype.bcd = "123";那document.bcd也是123吧!
如果说现在Document.prototype.abc = "1",HTMLDocument.prototype.abc = "2",那,document.abc的值是什么?
2吧,就近的来。