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 弹出框 替代浏览器的弹出框
Oct 29 Javascript
Js点击弹出下拉菜单效果实例
Aug 12 Javascript
JQuery1.8 判断元素是否绑定事件的方法
Jul 10 Javascript
jQuery截取指定长度字符串代码
Aug 21 Javascript
浅谈js里面的InttoStr和StrtoInt
Jun 14 Javascript
实现jquery放大镜的两种方法
Feb 22 jQuery
详解JavaScript 的变量
Mar 08 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
Apr 10 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
May 22 Javascript
js 判断当前时间是否处于某个一个时间段内
Sep 19 Javascript
如何基于原生javaScript生成带图片的二维码
Nov 21 Javascript
vue+ESLint 配置保存 自动格式化代码
Mar 17 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 防恶意刷新实现代码
2010/05/16 PHP
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
javascript使用appendChild追加节点实例
2015/01/12 Javascript
jquery仿百度百科底部浮动导航特效
2015/08/08 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
2016/06/24 Javascript
jquery延迟对象解析
2016/10/26 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
详解Angular4中路由Router类的跳转navigate
2017/06/09 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
Python中使用partial改变方法默认参数实例
2015/04/28 Python
Python中%r和%s的详解及区别
2017/03/16 Python
轻松实现TensorFlow微信跳一跳的AI
2018/01/05 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
2018/02/24 Python
浅述python中深浅拷贝原理
2018/09/18 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
python使用mitmproxy抓取浏览器请求的方法
2019/07/02 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
幼儿园家长会欢迎词
2014/01/09 职场文书
创卫工作总结2015
2015/04/22 职场文书
离婚答辩状范文
2015/05/22 职场文书
中学生运动会广播稿
2015/08/19 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书
Redis 哨兵机制及配置实现
2022/03/25 Redis