2

DOM 对象是常规的 Javascript 对象吗?如果不是,它们是什么?

4

5 回答 5

4

DOM 对象是更规范的 Javascript 对象吗?如果不是,它们是什么?

不,它们是“宿主对象”。它们不一定遵循与原生 JavaScript 对象相同的规则。

它们在某种意义上是对象,但它们是由宿主环境添加的,不是 ECMAScript 规范的一部分。

例如,我不相信有什么要求他们接受 expando 属性。或者在函数的情况下,我不知道它们是否需要具有可访问和可扩展的prototype属性。

此外,函数可能有也可能没有典型的方法Function.prototype,比如.call().apply()

这些规则比 ECMAScript 规范定义的对象的规则要宽松得多,因此您不必在所有情况下都依赖相同的行为。

于 2012-05-10T16:19:40.710 回答
3

以下是来自Mozilla 开发网络的 Documnet 对象模型 (DOM) 的描述:

文档对象模型是 HTML 和 XML 文档的 API。它提供文档的结构表示,使您能够修改其内容和视觉呈现。本质上,它将网页连接到脚本或编程语言。

Web 开发人员可用于操作和创建网页的所有属性、方法和事件都组织成对象(例如,表示文档本身的文档对象、表示 HTML 表格元素的表格对象等) . 在最新的 Web 浏览器中,可以通过脚本语言访问这些对象。

DOM 最常与 JavaScript 结合使用。也就是说,代码是用 JavaScript 编写的,但它使用 DOM 来访问网页及其元素。但是,DOM 被设计为独立于任何特定的编程语言,从而使文档的结构表示可从单一、一致的 API 获得。尽管我们在整个站点中都专注于 JavaScript,但可以为任何语言构建 DOM 的实现。

万维网联盟为 DOM 建立了一个标准,称为 W3C DOM。既然最重要的浏览器正确地实现了它,它应该能够支持强大的跨浏览器应用程序。

于 2012-05-10T16:33:54.297 回答
3

对,他们是:

> typeof document.body
"object"
> document.body instanceof Object
true
于 2012-05-10T16:18:52.210 回答
3

它们是类型HTMLElement

于 2012-05-10T16:18:02.123 回答
0

DOM 是一个 API,因此一组预定义的“对象”附加到窗口“命名空间”。它可以是 HTMLElement,但不仅是它们,它们不是 javascript 核心的一部分。所以有 javascript 核心和 DOM ,你可以有其他的 API。

于 2012-05-10T16:19:32.803 回答