我试图了解有关Web API的更多信息。阅读它们我发现在各种各样的Web API中有DocumentObjectModel API。阅读DOM规范,我找到了很多DOM接口的列表。这让我感到有些不安。在我的无知中,我认为一个API应该只包含一个接口(只有一组函数和属性),在这里我找到一个接口列表......这是我不做的第一件事。理解。
此外,我通常使用
之类的符号与DOM进行交互document.getElementById("idname");
document.getElementByTagName("tagname");
etc ect
我看到其中一些DOM接口具有我已经知道的名称,例如" Document"或者" Window",我使用它们(就像前两行代码一样),但是我使用它们不是大写的("文档"而不是" Document")。我不明白是否有链接beetwen" document"和"文件",例如......
最后,我注意到查询全局对象(例如,在浏览器控制台中,只需键入关键字"这个")我在响应中有一个对象(我猜)包含所有属性和全局对象的函数(或方法)。其中还有一些功能在DOM接口列表中列出了相同的名称。而这只是我注意到的另一件事,我无法解释。
那么,您能帮助我更深入地了解DOM API吗?
答案 0 :(得分:3)
这些东西来自javascript和DOM规范的交互。
大写字母Window
和Document
是由DOM和HTML规范定义的接口。
在Javascript中,当在浏览器环境中执行时,Window
的实例是全局对象,Window
是其原型。 document
和window
是这些接口定义的getter属性。由于窗口是global object(顶级this
),因此变量名称解析在范围链中走向最终落在全局对象上,如果它在其他地方找不到它window
最终解析为<global object>.window
。哪个是在Window
接口上定义的属性,它返回窗口实例本身,它也是全局对象。它是自我指涉的。
因此,全局对象最终具有javascript定义的属性,dom / html规范,并继承自原型也由各种规范定义。
一些原型也作为全局对象中的命名属性公开,而不仅仅是实例的原型链。这对instanceof
检查和特征检测很方便。一些构造函数也暴露在外,例new Image()
以与HTMLImageElement
相同的方式创建document.createElement("img")
的新实例。
可以通过各种构造函数或工厂(例如DOMParser
)创建其他文档实例。可以通过框架,页面的开启者或衍生的子窗口访问其他窗口实例。
使用调试器查看窗口对象可能会有所帮助。