js 判斷是否爲空對象、空數組

原文鏈接:https://www.cnblogs.com/xxhuan/p/6582114.html
//判斷參數是否爲空函數
isEmpty = function (obj) {
    //檢驗null和undefined
    if (!obj && obj !== 0 && obj !== '') {
        return true;
    }
    //檢驗數組
    if (Array.prototype.isPrototypeOf(obj) && obj.length === 0) {
        return true;
    }
    //檢驗對象
    if (Object.prototype.isPrototypeOf(obj) && Object.keys(obj).length === 0) {
        return true;
    }
    return false;

isPrototypeOf() 方法用於測試一個對象是否存在於另一個對象的原型鏈上。即判斷 Object 是否存在於 obj 的原型鏈上。需要注意的是,js 中一切皆是對象,也就是說,Object 也存在於數組的原型鏈上,因此這裏數組需要先於對象檢驗。

ps:isPrototypeOf和instanceof操作不一樣的。在表達式 object instanceof AFunction 中,檢測的是 AFunction.prototype是否在object的原型鏈中,而不是檢測 AFunction 自身。

該方法屬於 ES3 標準,現代瀏覽器均支持,包括 IE。 <( ̄︶ ̄)>

Object.keys() 方法會返回一個由給定對象的自身可枚舉屬性組成的數組,數組中屬性名的排列順序和使用 for…in 循環遍歷該對象時返回的順序一致、

該方法屬於 ES5 標準,IE9 以上和其它現代瀏覽器均支持。如果你很不幸的需要兼容 IE9以下瀏覽器,那就用 for…in 代替吧。但是,for…in 會將對象原型鏈上的屬性也枚舉出來,因此還需要加個判斷

for(var key in obj) {
    if(obj.hasOwnProperty(key)) {
        return false;
    }
}

hasOwnProperty()屬於 ES3 標準,現代瀏覽器均支持,包括 IE。可以放心使用啦。 <( ̄︶ ̄)>。還有一種很特別的檢驗空對象或空數組的方法,就是使用 JSON.stringify():

JSON.stringify(obj) === '{}';
JSON.stringify(obj) === '[]'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章