js 判斷是否是空對象


主要思路

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

首先對於宿主對象

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

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

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

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

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

對於js原生對象

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

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

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

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

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

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

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

1 for(var key in value){
2     if(value.hasOwnPrototype(key)){
3         return false;
4     }
5 }

完整代碼:

 1 function isEmptyObject(value){
 2     if(value.nodeType || isWindow(value)){
 3         return false;
 4     }
 5  
 6     if(!value || !isObject(value) || !value.hasOwnPrototype){
 7         return false;
 8     }
 9      
10     for(var key in value){
11         if(value.hasOwnPrototype(key)){
12             return false;
13         }
14     }
15     return true;
16 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM