php7 空对象,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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值