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 解决“options为空或不是对象”
Dec 22 Javascript
jquery实现动态画圆
Dec 04 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
Mar 19 Javascript
Node.js中如何合并两个复杂对象详解
Dec 31 Javascript
详解Vue 方法与事件处理器
Jun 20 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
Dec 19 Javascript
vue 使用Jade模板写html,stylus写css的方法
Feb 23 Javascript
Vue实现移动端页面切换效果【推荐】
Nov 13 Javascript
vue 移动端适配方案详解
Nov 15 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
Nov 09 Javascript
修改NPM全局模式的默认安装路径的方法
Dec 15 Javascript
如何利用JavaScript编写一个格斗小游戏
Jan 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
DIY实用性框形天线
2021/03/02 无线电
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
PHP面向对象分析设计的61条军规小结
2010/07/17 PHP
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
javascript生成随机颜色示例代码
2014/05/05 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
Angular2入门--架构总览
2017/03/29 Javascript
Vue.use源码分析
2017/04/22 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
分析JavaScript数组操作难点
2017/12/18 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
vue结合axios与后端进行ajax交互的方法
2018/07/06 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
javascript实现日历效果
2019/06/17 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
JS实现随机点名器
2020/04/12 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
css背景图片的背景裁切、背景透明度、背景变换等效果运用
2012/12/24 HTML / CSS
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
美国家居装饰店:Pier 1
2019/09/04 全球购物
什么是WEB控件?使用WEB控件有哪些优势?
2012/01/21 面试题
JS原生实现轮播图的几种方法
2021/03/23 Javascript
中文专业毕业生自荐信
2013/10/28 职场文书
汽车维修工岗位职责
2014/02/12 职场文书
工伤赔偿协议书
2014/04/15 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle