博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php7 空对象,js 判断是否是空对象
阅读量:5251 次
发布时间:2019-06-14

本文共 880 字,大约阅读时间需要 2 分钟。

主要思路

我们要考虑到的主要有: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;

}

转载地址:http://tzoav.baihongyu.com/

你可能感兴趣的文章
C语言 · 素数判断
查看>>
CentOS6.8部署MongoDB集群及支持auth认证
查看>>
给JFinal添加 Sqlite 数据库支持
查看>>
[转] Gitlab 8.x runner安装与配置
查看>>
asp.net mvc(2013-4-22 )——准备入门
查看>>
shell脚本编程笔记
查看>>
【转】df与du下的磁盘空间不一致 df du 统计磁盘空间不一致的解决方法
查看>>
Linux下jsp环境搭建(Nginx+jdk+mysql+tomcat)
查看>>
上拉电阻和下拉电阻
查看>>
理解 Node.js 的 Event loop
查看>>
【第五周作业】寸步难行
查看>>
C语言--循环队列实现
查看>>
cmd for 用法
查看>>
onbeforepaste
查看>>
JVM学习笔记三_异常初步
查看>>
寻找引用控件的方法
查看>>
python3 python2 import 的区别
查看>>
vivado2016.1下载程序出错:End of startup status: LOW
查看>>
browserify学习总结
查看>>
Linux查看当前目录下文件夹和文件的大小
查看>>