也就是说,为什么我们不遵循标准的 JavaScript 约定使用
var el = new Element("div");
但使用
var el = document.createElement("div");
去做吧?
(PSdocument
是类的对象Document
。 Element
也是类,Document
和Element
类都是在浏览器环境中定义的)。
也就是说,为什么我们不遵循标准的 JavaScript 约定使用
var el = new Element("div");
但使用
var el = document.createElement("div");
去做吧?
(PSdocument
是类的对象Document
。 Element
也是类,Document
和Element
类都是在浏览器环境中定义的)。
所有document.xxxx
方法都是 DOM 的一部分,而不是 Javascript 语言的一部分。它是一个单独的 API,属于浏览器,但允许浏览器中的 Javascript 访问。
如果要在浏览器中实现另一种语言,它将使用完全相同的 API 来访问 DOM。事实上,IE 中的 VBScript 正是这样做的——为了证明,请参见此处的一些示例代码。(但请注意,我不建议在浏览器中实际使用 VBScript!坚持使用 JS)
并且 Javascript 可以在浏览器环境(例如 node.js)之外使用,在这种情况下,它可能没有或不需要 DOM 类结构。
DOM 也可以在浏览器之外实现,并且相同的 API 可用于使用它的任何语言。例如,PHP 有一个 DOMDocument 类,它实现了所有相同的 DOM 方法来从树中添加/删除/等元素。
我认为 Javascript 作为一种语言需要与第三方控制结构无关。在这种情况下,DOM,向 DOM 添加新元素应该由其控制对象管理,而document
不是通过语言new Element("div")
。
在 node.js 中没有 DOM 元素的概念,因此内置的 DOM 控件在语言中是多余的。因此,在浏览器中抽象对 DOM 的控制和操作是有意义的,因此应该由抽象对象document
而不是语言中的控制结构来管理。