js 判断是否是空对象

主要思路

我们要考虑到的主要有: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;
}
时间: 2024-10-11 12:21:52

js 判断是否是空对象的相关文章

js判断是否为空和typeof的用法

(1)typeof作用用于查看数据类型 (2)typeof用法typeof 返回值类型有number, string, boolean, function, undefined, objectPS:在使用typeof()操作符时圆括号是可选项,可带可不带.即两种形式 typeof(XX) 或 typeof XX 1 console.log(typeof 2); // number 2 console.log(typeof "2"); // string 3 console.log(ty

js判断是否为空火undefined是否给undefined加引号

js判断是否为空为undefined如果判断的是类型则用typeof(),如果其本身就是“undefind”字符窜,则不能这样判断, 这样typeof之后是字符串类型就判断不出来了,这是需要去掉typeof直接判断两个字符串相等

JS判断内容为空方法总结

HTML代码: 用户名:<input type="text" id="username"> <p style="color:red" id="warning-message"></p> JS代码: // 获取对象 var oUsername = document.getElementById('username'); var oMsg = document.getElementById('w

js判断是否为空

http://dushanggaolou.iteye.com/blog/1293803 1.<input type="hidden" id="key" name="key" value="123"> 用js判断隐藏域的值是否为空, 方法一: Java代码   var keyVal= $("#key").val(); if(keyVal==undefined || keyVal=="&q

JS判断是否为JSON对象及是否存在某字段

$.ajax({ type: 'POST', url: url, success(function(data){ //判断是否为JSON对象 if(typeof(data) == "object" && Object.prototype.toString.call(data).toLowerCase() == "[object object]" && !data.length){ alert("is JSON 0bject&

判断是否为空对象的方法

1.将对象转变为string,判断是否是{} var data = {}; if(JSON.stringify(data) == '{}'){ return true; } 2.for in 循环判断 var data = {}; function isEmptyObj(data){ for(var a in data){ return false; } return true; } 3.jquery的isEmptyObject方法 此方法是jquery将2方法(for in)进行封装,使用时需

分享一个js判断是否是dom对象的方法

//首先要对HTMLElement进行类型检查,因为即使在支持HTMLElement //的浏览器中,类型却是有差别的,在Chrome,Opera中HTMLElement的 //类型为function,此时就不能用它来判断了 var isDOM = ( typeof HTMLElement === 'object' ) ? function(obj){ return obj instanceof HTMLElement; } : function(obj){ return obj && t

js判断一个对象是否为空对象

最近遇到一个问题,用vue循环一个数组,展示一些海报图片.数组为空的话是不会遍历的,为了不让能够出现默认图片,这也就需要在数组中增加一个默认空对象arr[{}].问题来了,提交的时候怎么判断这个对象是空的呢? 简单粗暴的判断 因为是展示海报图片,每个对象下都有url属性,所以最直接的判断当前object的url属性 if (arr[0].url) { ... } 这个方法是无法判断arr为空的情况,如果arr[0]是个null,那么浏览器回抛出Cannot read property 'url'

js判断字符串是否全为空(使用trim函数/正则表达式)

我们需要判断用户输入的是否全是空格,可以使用以下方法: 方法一: 使用trim() /* 使用String.trim()函数,来判断字符串是否全为空*/ function kongge1(test) { let str = test.trim(); if (str.length == 0) { console.log('字符串全是空格'); } else { console.log('输入的字符串为:' + test); } } 如果 trim() 不存在,可以在所有代码前执行下面代码 /* 给