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;
}
js 判断是否是空对象的更多相关文章
- js 判断是否为空对象、空数组
当需要判断参数是否为空时,总希望 js 能够提供原生的判断方法,可惜并没有,只能自己封装了. function isEmpty(obj) { // 检验 undefined 和 null if(!ob ...
- js判断是否为空和typeof的用法
(1)typeof作用用于查看数据类型 (2)typeof用法typeof 返回值类型有number, string, boolean, function, undefined, objectPS:在 ...
- js判断是否为空火undefined是否给undefined加引号
js判断是否为空为undefined如果判断的是类型则用typeof(),如果其本身就是“undefind”字符窜,则不能这样判断, 这样typeof之后是字符串类型就判断不出来了,这是需要去掉typ ...
- JS判断不能为空实例代码
JS判断不能为空实例代码.分享在此. 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " ...
- JS判断内容为空方法总结
HTML代码: 用户名:<input type="text" id="username"> <p style="color:red& ...
- js判断是否为空
http://dushanggaolou.iteye.com/blog/1293803 1.<input type="hidden" id="key" n ...
- js 判断空数组,空对象!
var attr1 = [ ]; var obj1 = { }; console.log(isEmpty(attr1)); console.log(isEmpty(obj1)); function i ...
- 关于如何利用原生js动态给一个空对象添加属性以及属性值
首先,回忆一下,访问对象属性一共有两种方法:点获取法和方括号获取法.而我们最常用的就是点获取法了.但是当我们遇到需要给对象动态添加属性和属性值时,点获取法好像就不太好用了,尤其是我们不知道属性名的时候 ...
- JS判断数组中的对象的每一个值不能为空
方法一:使用every()函数,此函数不怎么常用,想要了解更多请自查 //表格 evaluateData为表格的数据 <el-table id="out-table3" :d ...
随机推荐
- java过滤特殊字符的正则表达式
// 过滤特殊字符 public staticString StringFilter(String str) throws PatternSyntaxException { // 只允许字母和数字 / ...
- 《Erlang程序设计(第2版)》
<Erlang程序设计(第2版)> 基本信息 作者: (瑞典)Joe Armstrong 译者: 牛化成 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115354 ...
- Unicode 和 UTF-8 的区别
作者:于洋链接:https://www.zhihu.com/question/23374078/answer/69732605来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...
- 用Eclipse开发Androd应用程序时,自带虚机模拟器太慢了,怎么办
问:用Eclipse开发Androd应用程序时,系统自带模拟器太慢了,怎么办? 答:用Genymotin
- matlib实现梯度下降法(序一)
数据来源:http://archive.ics.uci.edu/ml/datasets/Combined+Cycle+Power+Plant 数据描述: 有四个输入特征,这些数据来自电厂,这四个特征和 ...
- 小游戏:HelloColor
这是我写的第一个游戏.模仿一款手机游戏"颜色运行"写的.大概花了一天的时间完成,挺简单的. 游戏名:HelloColor,翻译成中文是:你好色 按空格键开始和暂停开始游戏后,界面右 ...
- go语言之进阶篇普通变量的方法集
1.普通变量的方法集 示例: package main import "fmt" type Person struct { name string //名字 sex byte // ...
- Remote Desktop Session中如何触发Ctrl+Alt+Delete?
Ctrl+Alt+End is a keyboard shortcut used in a Remote Desktop Session to display the security dialog ...
- Jquery怎么获取select选中项 自定义属性的值
Jquery如何获取select选中项 自定义属性的值?HTML code <select id="ddl" onchange="ddl_change(this)& ...
- Android -- WebView进度条
有系统actionbar requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);//先给Activity注册界面进度条功能 setCo ...