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 相关文章推荐
jquery刷新页面的实现代码(局部及全页面刷新)
Jul 11 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
Jan 24 Javascript
JQuery创建DOM节点的方法
Jun 11 Javascript
JavaScript中的事件委托及好处
Jul 12 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
Jul 26 Javascript
微信小程序 共用变量值的实现
Jul 12 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
Aug 17 Javascript
vue-music关于Player播放器组件详解
Nov 28 Javascript
js数组常用最重要的方法
Feb 04 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
Aug 07 Javascript
JS浮点数运算结果不精确的Bug解决
Aug 01 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
Sep 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 动态执行带有参数的类方法
2009/04/10 PHP
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
Laravel利用gulp如何构建前端资源详解
2018/06/03 PHP
PHP生成短网址的思路以及实现方法的详解
2019/03/25 PHP
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
js闭包的用途详解
2014/11/09 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
javascript中数组的定义及使用实例
2015/01/21 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
详解vue中axios的封装
2018/07/18 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
2019/01/21 Javascript
vue组件之间数据传递的方法实例分析
2019/02/12 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
使用SAE部署Python运行环境的教程
2015/05/05 Python
python计算时间差的方法
2015/05/20 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
使用python实现滑动验证码功能
2019/08/05 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
切尔西足球俱乐部官方网上商店:Chelsea FC
2019/06/17 全球购物
总经理文秘岗位职责
2014/02/03 职场文书
教师产假请假条
2014/04/10 职场文书
《金子》教学反思
2014/04/13 职场文书
小学清明节活动总结
2014/07/04 职场文书
关于读书的演讲稿500字
2014/08/27 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
团代会闭幕词
2015/01/28 职场文书
大学生求职意向书
2015/05/11 职场文书
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
JavaScript实现简单拖拽效果
2021/09/15 Javascript
angular异步验证器防抖实例详解
2022/03/31 Javascript
Python之matplotlib绘制饼图
2022/04/13 Python