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 相关文章推荐
一些mootools的学习资源
Feb 07 Javascript
js select常用操作控制代码
Mar 16 Javascript
jquery网页元素拖拽插件效果及实现
Aug 05 Javascript
VueJS全面解析
Nov 10 Javascript
Bootstrap文件上传组件之bootstrap fileinput
Nov 25 Javascript
理解 javascript 中的函数表达式与函数声明
Jul 07 Javascript
解决vue中对象属性改变视图不更新的问题
Feb 23 Javascript
Vue中android4.4不兼容问题的解决方法
Sep 04 Javascript
Bootstrap-table自定义可编辑每页显示记录数
Sep 07 Javascript
Element输入框带历史查询记录的实现示例
Jan 15 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
Feb 22 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
Aug 06 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+mysql保存和输出文件
2006/10/09 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
javascript 触发事件列表 比较不错
2009/09/03 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
node中Express 动态设置端口的方法
2017/08/04 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
Python里隐藏的“禅”
2014/06/16 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
Python Pandas 箱线图的实现
2019/07/23 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
Matplotlib.pyplot 三维绘图的实现示例
2020/07/28 Python
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
国际领先的学术出版商:Springer
2017/01/11 全球购物
外贸业务员工作职责
2014/01/06 职场文书
幼儿园门卫制度
2014/01/29 职场文书
二手房买卖协议书
2014/04/10 职场文书
《赶海》教学反思
2014/04/20 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
2016中秋节广告语
2016/01/28 职场文书
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang