js 判断是否是空对象

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

主要思路

我们要考虑到的主要有:js原生对象,宿主对象(浏览器上面的)。

首先对于宿主对象

主要判断是DOM 对象 和是否是window 对象

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

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

对于这两种肯定不是空对象。

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


对于js原生对象

是否本身返回就是false  对于自身返回false 的有   'false','null' ,' "" ','undefined','NaN', '0'  这6中情况

这些显然不能作为空对象。

然后判断是否是一个对象  使用 Object.prototype.toString.call(value) === '[object Object]';  简称为 isObject

还有一种判断,判断是否拥有 hasOwnPrototype 方法。

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

如果都不满足这些情况的话,

需要处理 是否拥有自身属性,

for(var key in value){
    if(value.hasOwnPrototype(key)){
        return false;
    }
}


完整代码:

function isEmptyObject(value){
    if(value.nodeType || isWindow(value)){
        return false;
    }

    if(!value || !isObject(value) || !value.hasOwnPrototype){
        return false;
    }
    
    for(var key in value){
        if(value.hasOwnPrototype(key)){
            return false;
        }
    }
    return true;
}


标签: 代码

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇: Python3.4实现的12306最新验证码识别

下一篇:从网络下载图片,保存,并用 UIImageView 从保存中显示