2013-04-15 85 views
4

也就是說,爲什麼我們不按照使用在JavaScript中,爲什麼我們使用el = document.createElement()來創建Element對象而不是el = new Element();

var el = new Element("div"); 

,但標準的JavaScript約定使用

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

辦呢?

(P.S. document是類的對象DocumentElement也是一類,並且兩個DocumentElement類在瀏覽器環境中定義)。

+4

因爲它不是Javascript的一部分,而是屬於兩個獨立事物的DOM的一部分。 – Christoph

+2

檢查此問題http://stackoverflow.com/questions/6241716/is-there-a-difference-between-new-image-and-document-createelementimg – Tommi

+1

@Christoph但「元素」就像「文檔」,他們是無論是在瀏覽器環境中 –

回答

1

我看到這個的方式是Javascript作爲一種語言需要與第三方控制結構無關。在這種情況下,向DOM添加新元素的DOM應由其控制對象document進行管理,而不是通過語言new Element("div")進行管理。

在node.js中沒有DOM元素的概念,因此構建在DOM控件中的語言是多餘的。在瀏覽器中抽象DOM的控制和操作因此是有意義的,因此應該由抽象對象document而不是由語言內的控制結構來管理。

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元素。

相關問題