我对javascript有点新,并试图了解ECMAscript定义的W3C DOM标准和javascript是如何互操作的。
具体来说,据我所知:
ECMAscript标准定义了全局对象的存在,该对象提供诸如parseInt(string)
之类的函数,并明确允许通过它访问其他内置对象,但这些对象的定义留待实现。
W3C DOM标准定义了一组对象和接口,它们对应于HTML文档的结构。其中一个是Document
对象(大写D),其中包含getElementById
等方法。但是,根据我的理解,此规范并未定义如何获取表示浏览器中当前文档的此类对象的实例。
基本上,我所追求的是 - 在哪里明确声明,当在网页中执行javascript时,我可以调用document.getElementById("someId")
(注意小写d),并且document
属性表示javascript正在执行的文档的DOM?
这个特定的细节是否特定于实现。它不应该在某个地方标准化吗?我能得到的最近的是Gecko DOM文档,似乎暗示document
和Document
是等价的。我以为javascript是区分大小写的?或者我只是真的肛门解释这些东西?
编辑:
在Jason评论之后浏览HTML 5标准工作草案,我认为抓住我正在寻找的东西是
6.5.3.3创建脚本
...用户代理必须执行以下步骤:
4
。设置脚本的全局对象,脚本的浏览上下文,脚本的URL字符编码和脚本的基本URL
6.5.3.1全局对象的状态
“这通常是一个Window对象。在JavaScript中,这对应于全局对象。”
此外,6.1浏览上下文状态
“用户主要与用户代理交互的主视图是默认视图。表示此视图的AbstractView对象还必须实现Window接口,并称为Document的Window对象.WindowProxy对象转发所有内容到活动文档的默认视图的Window对象。“
由于AbstractView接口根据DOM 2 Views规范实现了document属性,这可能是定义Javascript全局文档属性的存在。
答案 0 :(得分:2)
这被非正式地称为“DOM 0级”,它从未被标准化,尽管已经稳定了十年甚至更长时间。
window
,document
等将在HTML 5(即将推出的W3C标准)中进行标准化。
对于区分大小写:Document
是接口的名称。这是一种类型。 document instanceof Document
是真的。
HTMLDocument
是另一个界面。 document instanceof HTMLDocument
也是如此。
答案 1 :(得分:0)
这可能没有用,但是我对你所问的问题的理解说你在对象和对象本身之间和它的实例之间有点混淆。
当您调用document.getElementById("someId")
时,您正在调用名为document
的实例化对象,该对象是对象Document
的实例。这样,如果执行document instanceof Document
,它将返回true。
我不知道标准是否表明浏览器会创建Document元素的实例,或者它是否会执行,因为我从未阅读过该规范。