js 判断是否是空对象
2018-07-20 来源:open-open
主要思路
我们要考虑到的主要有: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; }
标签: 代码
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。