js 判斷是否是空對象

jopen 10年前發布 | 1K 次閱讀 JavaScript

主要思路

我們要考慮到的主要有:js原生對象,宿主對象(瀏覽器上面的)。

首先對于宿主對象

主要判斷是DOM 對象 和是否是window 對象

是否是DOM對象  value.nodeType 是否存在。

是否是window 對象,value != null  && value === value.window;

對于這兩種肯定不是空對象。

if(value.nodeType || isWindow(value)){
    return false;
}


對于js原生對象

是否本身返回就是false  對于自身返回false 的有   'false','null' ,' "" ','undefined','NaN', '0'  這6中情況

這些顯然不能作為空對象。

然后判斷是否是一個對象  使用 Object.prototype.toString.call(value) === '[object Object]';  簡稱為 isObject

還有一種判斷,判斷是否擁有 hasOwnPrototype 方法。

if(!value || !isObject(value) || !value.hasOwnPrototype){
    return false;
}

如果都不滿足這些情況的話,

需要處理 是否擁有自身屬性,

for(var key in value){
    if(value.hasOwnPrototype(key)){
        return false;
    }
}


完整代碼:

function isEmptyObject(value){
    if(value.nodeType || isWindow(value)){
        return false;
    }

    if(!value || !isObject(value) || !value.hasOwnPrototype){
        return false;
    }
    
    for(var key in value){
        if(value.hasOwnPrototype(key)){
            return false;
        }
    }
    return true;
}


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!