JavaScript 判斷對象是否爲空“{}”

先列一下之前在網上看到的解決辦法,然後再做分析:

方法一:  循環

function isEmptyObj(obj){
let o;
for(o in obj){
  return false;
}
return true;
}

方法二:借用JSON對象序列表化

var o = {};
JSON.stringify(o) === '{}'//true

方法三:Jquery的isEmptyObject方法

var o = {};
$.isEmptyObject(o)//true

方法四:枚舉

var o = {};
Object.keys(o);//[]

通常情況下以上四種辦法基本可以解決問題,但是有一種特殊情況,上述四種方法均不適用,即通過Object的defineProperty方法爲obj定義屬性,並且描述符enumerable配爲false。

Object.defineProperty(o,'test',{enumerable:false});//此時test屬性是不可被枚舉的,因此以上四種方法均失效

在這種情況下,樓主想到的辦法是,使用Object.getOwnPropertyNames(obj)來獲取對象obj的屬性名稱,該方法返回一個數組,若數組的長度爲0,則obj此時爲{};以下是在瀏覽器上測試的結果:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章