JS判断对象是否为空,javascript判断空对象
本文主要介绍在原生javascript中检查对象是否为空的示例实现。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
目录
什么是原生JavaScript?在新的浏览器中检查空对象以解决误报。b .在旧浏览器中使用JavaScript检查空对象来检查空对象。其他类型的构造函数也可以正常判断使用外部库检查空对象。本机VS库下面的代码片段用于检查对象是否为空。对于较新的浏览器,可以使用ES6的“Object.keys”。对于较老的浏览器,可以安装Lodash库并使用它的“isEmpty”方法。
const empty={ };
/* -
新浏览器
- */
Object.keys(空)。长度===0 empty.constructor===Object
//真
/* -
旧版浏览器可以使用Lodash。
- */
_.isEmpty(空)
//真
什么是原生 JavaScript
原生JavaScript指的是不使用框架或库。只是普通的JavaScript,不使用Lodash或者jQuery之类的库。
A.在较新的浏览器中检查空对象
我们可以使用内置的Object.keys方法来检查空对象。
const empty={ };
Object.keys(空)。length===0 empty . constructor===object;
为什么我们需要额外的构造函数检查?
你可能想知道为什么我们需要检查构造函数。它旨在重写包装实例。在JavaScript中,我们有9个内置的构造函数。
新对象();
new String();
新号码();
new布尔值();
new Array();
new RegExp();
new函数();
新日期();
这里,我们可以使用new Object()创建一个空对象。
const obj=new Object();
Object.keys(obj)。长度===0;//真
因此,只使用Object.keys,当对象为空时,它确实返回true。但是,当我们使用其他构造函数创建一个新的对象实例时,会发生什么呢?
函数badEmptyCheck(值){
返回Object.keys(值)。长度===0;
}
badEmptyCheck(new String());//真
badEmptyCheck(new Number());//真
badEmptyCheck(new Boolean());//真
badEmptyCheck(new Array());//真
badEmptyCheck(new RegExp());//真
badEmptyCheck(new Function());//真
badEmptyCheck(new Date());//真
通过检查 constructor 解决误报
通过添加构造函数检查来更正此错误。
函数goodEmptyCheck(值){
Object.keys(值)。长度===0
value.constructor===Object//构造函数检查
}
goodEmptyCheck(new String());//假
goodEmptyCheck(new Number());//假
goodEmptyCheck(new Boolean());//假
goodEmptyCheck(new Array());//假
goodEmptyCheck(new RegExp());//假
goodEmptyCheck(new Function());//假
goodEmptyCheck(new Date());//假
对其他值进行空检查
然后,我们用一些值测试我们的方法,看看我们会得到什么。
函数是空对象(值){
返回Object.keys(值)。长度===0 value . constructor===Object;
}
到目前为止看起来不错,对于非对象返回false。
isEmptyObject(100) //false
isEmptyObject(true) //false
isEmptyObject([]) //false
但是要小心!下列值将引发错误。
//TypeError:无法将未定义或null转换为对象
isEmptyObject(未定义);
isEmptyObject(null);
改进的空值和未定义的空值检查
如果不希望它抛出TypeError,可以添加额外的检查。
函数是空对象(值){
返回值Object.keys(value)。长度===0 value . constructor===Object;
}
B.旧版本浏览器中的空对象检查
如果你需要支持旧的浏览器怎么办?众所周知,当我们说老浏览器时,我们指的是IE。我们有两个选择,使用本地或利用库。
使用 JavaScript 检查空对象
原来的JS没有那么简洁,但是判断是否用于空对象是没有问题的。
函数isObjectEmpty(值){
返回(
Object . prototype . tostring . call(value)===[Object Object] JSON . stringify(value)=== { }
);
}
对于对象,它返回true。
isObjectEmpty({ });//真
isObjectEmpty(new Object());//真
其它类型的构造函数也能正常判断
isObjectEmpty(新字符串());//假
isObjectEmpty(new Number());//假
isObjectEmpty(new Boolean());//假
isObjectEmpty(new Array());//假
isObjectEmpty(new RegExp());//假
isObjectEmpty(新函数());//假
isObjectEmpty(new Date());//假
传入null和undefined不会报告TypeError。
isObjectEmpty(null);//假
isObjectEmpty(未定义);//假
使用外部库检查空对象
有很多外部库可以用来检查空对象。而且大部分对老浏览器都有很好的支持。
洛达什
_.isEmpty({ });
//真
强调
_.isEmpty({ });
//真
框架
jquery . isemptyobject({ });
//真
原生 VS 库
答案要看情况!我喜欢尽可能简化程序,因为我不喜欢外部库的开销。另外,对于较小的应用,我也懒得设置外部库。
但是如果你的应用程序已经安装了一个外部库,那么继续使用它。你会比任何人都了解你的应用。所以选择最适合你情况的方法。
以上是在原生javascript中检查对象是否为空的示例实现的细节。关于在javascript中检查对象是否为空的更多信息,请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。