在JavaScript中,为什么我们使用el = document.createElement()来创建一个Element对象而不是el = new Element();

时间:2013-04-15 11:47:15

标签: javascript dom

也就是说,为什么我们不遵循使用

的标准JavaScript惯例
var el = new Element("div");

但请使用

var el = document.createElement("div");

要做到吗?

(PS document是类Document的对象。Element也是一个类,DocumentElement类都定义在浏览器环境)。

2 个答案:

答案 0 :(得分:4)

所有document.xxxx方法都是DOM的一部分,而不是Javascript语言的一部分。它是一个独立的API,属于浏览器,但允许浏览器中的哪个Javascript访问。

如果要在浏览器中实现另一种语言,它将使用完全相同的API来访问DOM。实际上,IE中的VBScript就是这样做的 - 为了证明,see some example code here。 (但请注意,我建议在浏览器中实际使用VBScript!坚持使用JS

Javascript可以在浏览器环境之外使用(例如node.js),在这种情况下,它可能没有或不需要DOM类结构。

DOM也可以在浏览器之外实现,并且任何使用它的语言都可以使用相同的API。例如,PHP有一个DOMDocument类,它实现了所有相同的DOM方法,以便从树中添加/删除/ etc元素。

答案 1 :(得分:1)

我认为这是因为Javascript作为一种语言需要与第三方控制结构无关。在这种情况下,向DOM添加新元素的DOM应由其控制对象document管理,而不是通过语言new Element("div")进行管理。

在node.js中没有DOM元素的概念,因此在DOM控件中内置的语言将是多余的。因此,在浏览器中抽象DOM的控制和操作是有意义的,因此应该由抽象对象document而不是语言中的控制结构来管理。