2016-08-01 45 views
1

請原諒我缺乏關於網絡技術和網絡相關方面和術語的知識。一個答案this問題指出The DOM standards define interfaces that are implemented by the objects from the DOM object tree in the browser.DOM API是一個面向對象的API嗎?

我很想知道的是,是的interface概念,implementationobjects等在這裏,我們是在面向對象編程熟悉是一回事嗎?換句話說,DOM API是一個面向對象的API嗎?

+0

你是什麼意思的「面向對象的API」?它可能會以這種方式實現,但這並不意味着您可以訪問繼承等。 – 4castle

+0

@ 4castle,一種可用於使用面嚮對象語言進行編程的API。 – atiyar

+0

是的,我想它是面向對象的。像JavaScript這樣的語言不過是大部分工作的本地代碼的頂部。您無法在JavaScript中創建「界面」。沒有編譯器。 – 4castle

回答

2

狀態和方法可以在數據結構上共存的任何語言都是面向對象的。靜態類型的OO語言常見的接口,類和其他功能並不是使語言OO成爲可能。另外,JS中可能沒有interface特性,但從概念上講,接口只是對象必須履行的契約,所以沒有什麼會阻止在JS中記錄這些接口。

DOM API絕對是OO。其實,DOM代表文件對象模型。換句話說,DOM是面向對象的解決方案,用於表示HTML和XML文檔並與之交互。

但是,這並不意味着它尊重像固體原理這樣的基本面向對象原則。

-2

JS中的所有東西都是一個對象,所以你的問題的真正答案是肯定的。但是我認爲你所要求的是你在調用DOM API時通常從DOM API得到的響應,而這個答案通常是一個HTML元素作爲字符串。這是因爲DOM只是腳本與網頁連接的一種方式。

它大部分時間輸出HTML元素,您可以很容易地測試它 - 只需在要測試的某個HTML元素上使用console.log(whatever);即可。

示例:從DOM API

var newOne = document.getElementById('orange-text'); 
console.log(newOne); 

響應(你在HTML有通常只是無論):

<p id="orange-text"">This text has an orange background because of a comparison operator</p> 

現在嘗試輸出相同的變量,治療作爲數組變量調用位置零:

var newOne = document.getElementById('orange-text')[0]; 
console.log(newOne); 

響應將是: undefined

答案是未定義的,因爲DOM沒有返回一個可以迭代的位置的對象。

+0

我不確定數組部分應該教什麼。 – 4castle

+0

它沒有返回一個包含位置的數組,我懷疑這是OP想知道的。 – staypuftman

+2

澄清:JavaScript中的所有東西都是除原語之外的對象(如數字,布爾值,字符串,未定義和空值) – 4castle

相關問題