1.轉(zhuǎn)換成字符串進(jìn)行比較
function IsNullObj(obj){
if(JSON.stringify(obj) === "{}"){
console.log("true");
}else{
console.log("false");
}
}

image.png
2.利用for in 原理判斷是否有key值
function IsNull(obj){
if(obj instanceof Array){
console.log('是數(shù)組')
}
else if(obj == undefined){
console.log('是undefined')
}
else if(obj == ''){
console.log('字符串')
}
else if(obj == null){
console.log('是null')
}
else{
for(var i in obj){
return false
}
return true
}
}

image.png
function IsEmptyObject(obj){
if(!obj || typeof obj != 'object' || Array.isArray(obj)){
return false;
}
//第一種
//測(cè)試性能段
/*
console.time('first');
if(JSON.stringify(obj) === '{}'){
console.timeEnd ('first');
return true
}else{
console.timeEnd ('first');
return false;
}
*/
return (JSON.stringify(obj) === '{}')
//第二種
console.time('second');
for(var key in obj){
console.timeEnd ('second');
return false
}
console.timeEnd ('second');
return true;
}
1.解決思路
第一種就是粗暴的直接轉(zhuǎn)字符串,然后強(qiáng)行比較第二種就是利用for in的原理,然后一旦進(jìn)了循環(huán),說明有key值,那直接false啦,否則就是空對(duì)象
2.性能比較
下面測(cè)試一下兩個(gè)方法的性能比較第一種在a就是一個(gè)空對(duì)象的情況下,在Imac谷歌瀏覽器上平均耗時(shí)在0.012ms左右
第二種在a就是一個(gè)空對(duì)象的情況下,在Imac谷歌瀏覽器上平均耗時(shí)在0.007ms左右,性能差距為兩倍
第一種在a是一個(gè)普通對(duì)象的情況下,豆瓣的api對(duì)象,在Imac谷歌瀏覽器上平均耗時(shí)在0.08ms左右
第二種在a是一個(gè)普通對(duì)象的情況下,豆瓣的api對(duì)象,在Imac谷歌瀏覽器上,第一次稍慢,0.02ms,平均耗時(shí)在0.0075ms左右,性能差距隨著對(duì)象越大,差距也會(huì)越大