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 相关文章推荐
JS中setTimeout()的用法详解
Apr 14 Javascript
js获取某月的最后一天日期的简单实例
Jun 22 Javascript
JS实现图片横向滚动效果示例代码
Sep 04 Javascript
详解JavaScript正则表达式中的global属性的使用
Jun 16 Javascript
深入解读JavaScript中的Iterator和for-of循环
Jul 28 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
Jan 14 Javascript
React.js入门实例教程之创建hello world 的5种方式
May 11 Javascript
深入理解jquery中的事件与动画
May 24 Javascript
基于Bootstrap实现tab标签切换效果
Apr 15 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
Sep 28 Javascript
Angular2中监听数据更新的方法
Aug 31 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
Sep 28 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
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
Js中setTimeout()和setInterval() 何时被调用执行的用法
2013/04/12 Javascript
用jquery生成二级菜单的实例代码
2013/06/24 Javascript
百度移动版的url编码解码示例
2014/04/29 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
node.js的事件机制
2017/02/08 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
一次微信小程序内地图的使用实战记录
2019/09/09 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
按日期打印Python的Tornado框架中的日志的方法
2015/05/02 Python
python数据清洗系列之字符串处理详解
2017/02/12 Python
开源Web应用框架Django图文教程
2017/03/09 Python
Python 的类、继承和多态详解
2017/07/16 Python
Python反射用法实例简析
2017/12/22 Python
Python 中的lambda函数介绍
2018/10/10 Python
python中下标和切片的使用方法解析
2019/08/27 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
为什么说python更适合树莓派编程
2020/07/20 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
一款css实现的鼠标经过按钮的特效
2014/09/11 HTML / CSS
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
英国领先的运动物理治疗供应公司:Vivomed
2018/07/14 全球购物
学生会主席就职演讲稿
2014/01/14 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
2015年元旦主持词开场白
2014/12/14 职场文书
销售员自我评价
2015/03/11 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
2015年酒店销售部工作总结
2015/07/24 职场文书
SQLServer中exists和except用法介绍
2021/12/04 SQL Server