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 }

 

posted @ 2017-10-23 10:26  魔流剑  阅读(3260)  评论(0编辑  收藏  举报