如何判斷一個js對象是否一個DOM對象

咱們在寫js代碼時有時須要判斷某個對象是否是DOM對象,而後再進行後續的操做,這裏我給出一種兼容各大瀏覽器,同時又算是比較穩妥的一種方法。javascript

要判斷一個對象是否DOM對象,首先想到的無非就是它是否具備DOM對象的各類屬性或特徵,好比是否有nodeType屬性,有tagName屬性,等等。判斷的特徵越多,也就越可靠,由於畢竟咱們自定義的js對象也能夠有那些屬性。還有其餘方法嗎?html

DOM Level2標準中定義了一個HTMLElement對象,它規定全部的DOM對象都是HTMLElement的實例,因此咱們能夠利用這點來判斷一個對象是否是DOM對象:若是該對象是HTMLElement的實例,則它確定是一個DOM對象。在不支持HTMLElement的瀏覽器中咱們則仍是使用特徵檢測法。java

 

 

<script type="text/javascript">
    //首先要對HTMLElement進行類型檢查,由於即便在支持HTMLElement
    //的瀏覽器中,類型倒是有差異的,在Chrome,Opera中HTMLElement的
    //類型爲function,此時就不能用它來判斷了
    var isDOM = ( typeof HTMLElement === 'object' ) ?
                function(obj){
                    return obj instanceof HTMLElement;
                } :
                function(obj){
                    return obj && typeof obj === 'object' && obj.nodeType === 1 && typeof obj.nodeName === 'string';
                }
    </script>
相關文章
相關標籤/搜索