2013-12-11 147 views
0

我試圖找出哪些是DOM對象或區分是一個JavaScript對象如何DOM對象和JavaScript對象

var domObj =document.getElementById('lga'); 

typeof domObj 

"object" 

var jsObj = {name:"BP"} 

typeof jsObj 

"object" 

那我怎麼確定哪些是DOM對象或JS對象。

+0

DOM對象*是* javascript對象,如果通過javascript訪問它們。 – Brandon

+0

所以你真正想知道的是「有些對象是DOM對象還是不是DOM對象?」 – Brandon

+0

jQuery只會'else if(selector.nodeType)'。當然,如果普通對象具有這樣的屬性,你會得到誤報。 –

回答

4

您可以使用

domObj instanceof HTMLElement; // true 

它將爲

jsObj instanceof HTMLElement; // false 

是假的。在if它看起來像這樣

if (domObj instanceof HTMLElement) { 
    // ... 
} 
else { 
    // ... 
} 

您可以通過檢查他們的constructor財產

document.body.constructor; // function HTMLBodyElement() { [native code] } 
+0

好主意。如果您對TextNodes,CommentNodes等也感興趣,則可以將其與Node進行比較,而不是HTMLElement。 – psquared

+0

domObj instanceof HTMLElement; 這可以在Chrome中正常工作,但不在IE8中, domObj instanceof Object; 這將在Chrome中返回true,但在IE8中返回false。 是否有任何具體的方式來做到crossbrowser。 – jforjs