一、將對象轉為字符串比較
這是最容易想到的方法,主要使用JSON.stringify()這個方法對對象進行強轉:
var a={};
var b=new Object();
console.log(JSON.stringify(a)=="{}") //true
console.log(JSON.stringify(b)=="{}") //true
二、for…in循環
使用for in循環可以遍歷所有屬性以次判斷對象是否為空對象:
var a={};
function isEmptyObject(obj){
for(var key in obj){
return false
};
return true
};
console.log(isEmptyObject(a));
三、Object.getOwnPropertyNames()
Object.getOwnPropertyNames()方法返回一個由指定對象的所有自身屬性的屬性名(包括不可枚舉屬性但不包括Symbol值作為名稱的屬性)組成的數組。用此方法判斷空對象只需要判斷返回的數組長度是否為零,為零的話就是空對象。
var obj = { };
console.log(Object.getOwnPropertyNames(obj).length == 0); // true
四、Object.keys()
該方法屬於 ES5 標准,IE9 以上和其它現代瀏覽器均支持。Object.keys() 方法會返回一個由一個給定對象的自身可枚舉屬性組成的數組,數組中屬性名的排列順序和使用 for…in 循環遍歷該對象時返回的順序一致。用此方法判斷空對象只需要判斷返回的數組長度是否為零,為零的話就是空對象。
var data = {};
var arr = Object.keys(data);
console.log(arr.length == 0);//true