Javascript中判断对象是否为空


Posted in Javascript onJune 10, 2015

发现了一个巧妙的实现: 需要检查一个对象(Object)是否为空,即不包含任何元素。Javascript 中的对象就是一个字典,其中包含了一系列的键值对(Key Value Pair)。检查一个对象是否为空,等价于检查对象中有没有键值对。写成代码,形如:

if (isEmptyObject(obj)) {

 // obj is empty
} else {
 // not empty
}

至于 isEmptyObject 的实现,jQuery 中有一个很有想法的方式,请看代码: 

function isEmptyObject(obj) {
 for (var key in obj) {
 return false;
 }
 return true;
}

 尽管 Javascript 没有原生提供 isEmpty() 方法,但它提供了迭代器,可以用来遍历所有的键值对。于是 jQuery 所做的事情,就是尝试遍历,如果有任何一个键值对,即说明对象非空,直接返回 false。从效率上来说,由于只读取了一个元素,顶多加上一些跳出循环的开销,实际性能不会比原生方法差太多。这是一个非常巧妙的实现。

注:有网友指出 ES5 中提供了 Object.getOwnPropertyNames 方法来获取所有的元素键。它的返回值是一个数组,当数组长度为零时,说明对象为空。

Javascript 相关文章推荐
javascript 动态修改样式和层叠样式表代码
Apr 27 Javascript
javascript Array对象基础知识小结
Nov 16 Javascript
input输入框的自动匹配(原生代码)
Mar 19 Javascript
jquery如何把参数列严格转换成数组实现思路
Apr 01 Javascript
js实现ArrayList功能附实例代码
Oct 29 Javascript
JavaScript原生对象之Number对象的属性和方法详解
Mar 13 Javascript
JavaScript中的return语句简单介绍
Dec 07 Javascript
jQuery EasyUI Pagination实现分页的常用方法
May 21 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
Apr 17 Javascript
js实现从左向右滑动式轮播图效果
Jul 07 Javascript
浅谈React中的元素、组件、实例和节点
Feb 27 Javascript
详解VUE里子组件如何获取父组件动态变化的值
Dec 26 Javascript
javascript事件委托的方式绑定详解
Jun 10 #Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
Jun 10 #Javascript
浅析JavaScript动画
Jun 10 #Javascript
JavaScript操作XML文件之XML读取方法
Jun 09 #Javascript
JavaScript检查数字是否为整数或浮点数的方法
Jun 09 #Javascript
jQuery取消ajax请求的方法
Jun 09 #Javascript
JavaScript动态添加style节点的方法
Jun 09 #Javascript
You might like
法压式咖啡之制作法
2021/03/03 冲泡冲煮
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
php原生导出excel文件的两种方法(推荐)
2016/11/19 PHP
基于jquery实现的可以编辑选择的下拉框的代码
2010/11/19 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
vue使用过滤器格式化日期
2021/01/20 Vue.js
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
python3 logging日志封装实例
2020/04/08 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
家长对小学生的评语
2014/01/28 职场文书
中班中秋节活动反思
2014/02/18 职场文书
篝火晚会策划方案
2014/05/16 职场文书
节能标语大全
2014/06/21 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
月考总结与反思
2015/10/22 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android
Java数据结构之堆(优先队列)
2022/05/20 Java/Android