别了 JavaScript中的isXX系列


Posted in Javascript onAugust 01, 2012
isNull: function(a){ 
return a === null; 
}, 
isUndefined: function(a){ 
return a === undefined; 
}, 
isNumber: function(a){ 
return typeof a === 'number'; 
}, 
isString: function(a){ 
return typeof a === 'string'; 
}, 
isBoolean: function(a){ 
return typeof a === 'boolean'; 
}, 
isPrimitive: function(b){ 
var a = typeof b; 
return !!(b === undefined || b === null || a == 'boolean' || a == 'number' || a == 'string'); 
}, 
isArray: function(a){ 
return proto_obj.toString.call(a) === '[object Array]'; 
}, 
isFunction: function(a){ 
return proto_obj.toString.call(a) === '[object Function]'; 
}, 
isPlainObject: function(o){ 
if (!o || o === win || o === doc || o === doc.body) { 
return false; 
} 
return 'isPrototypeOf' in o && proto_obj.toString.call(o) === '[object Object]'; 
}, 
isWindow: function(o){ 
return o && typeof o === 'object' && 'setInterval' in o; 
}, 
isEmptyObject: function(o){ 
for(var a in o) { 
return false; 
} 
return true; 
}

以上isXX系列中,isUndefined在类库中用的最多。如判断是否传入了某个参数,判断对象是否拥有某个属性等等。但这个函数是不必存在,我已将其移除。理由如下

1,isUndefined 与 使用全等(===)或typeof 多了一层函数调用。很明显多一层函数调用比直接使用原生的运算符效率会低(虽然有些微不足道),但如果isUndefined调用次数很多如上万次还是很明显的。我曾经在邮箱框架中加入了该函数,调用次数有4000多次,从性能分析工具看占用了近1%的时间。仅仅一个判断占1%的调用时间还是很可怕的。当然,邮箱框架内的isUndefined处在多层闭包的顶层,访问其也会占用较多时间。如果这一条还不足以让你放弃isUndefined,请看下面。
2,函数从一定程度上是对一些代码的封装,抽象。是组织良好代码的方式之一,且有利于降低代码的复杂性。但isNull/isUndefined/isBoolean/isNumber/isString函数内仅有一句,抽象层次很低。因此完全不必封装而提取出一个函数。
3,isUndefined(a) 与 a === undefined相比并不会节省几个字节(呵,你可以命名的更短但损失了可读性)。
综上,我去掉了类库中对基本类型判断的isNull/isUndefined/isBoolean/isNumber/isString,需要用到这些判断的时候直接使用typeof运算符等。

Javascript 相关文章推荐
javascript 支持链式调用的异步调用框架Async.Operation
Aug 04 Javascript
JS获取时间的方法
Jan 21 Javascript
jquery序列化方法实例分析
Jun 10 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
May 11 Javascript
Bootstrap表格和栅格分页实例详解
May 20 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
Aug 16 Javascript
JS中常用的正则表达式
Sep 29 Javascript
阿里云ecs服务器中安装部署node.js的步骤
Oct 08 Javascript
jQuery简单实现对数组去重及排序操作实例
Oct 31 jQuery
使用JQuery自动完成插件Auto Complete详解
Jun 18 jQuery
vue 基于abstract 路由模式 实现页面内嵌的示例代码
Dec 14 Vue.js
react antd实现动态增减表单
Jun 03 Javascript
JS判断元素为数字的奇异写法分享
Aug 01 #Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
Aug 01 #Javascript
jQuery源码中的chunker 正则过滤符分析
Jul 31 #Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
Jul 31 #Javascript
基于jquery的点击链接插入链接内容的代码
Jul 31 #Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
Jul 31 #Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
Jul 31 #Javascript
You might like
php仿ZOL分页类代码
2008/10/02 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
php发送get、post请求的6种方法简明总结
2014/07/08 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
2016/03/07 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
JavaScript对象模型-执行模型
2008/04/28 Javascript
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
Javascript 按位与赋值运算符 (&=)使用介绍
2014/02/04 Javascript
js实现单击图片放大图片的方法
2015/02/17 Javascript
jQuery定义插件的方法
2015/12/18 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
Python中的True,False条件判断实例分析
2015/01/12 Python
Python探索之Metaclass初步了解
2017/10/28 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
django表单实现下拉框的示例讲解
2018/05/29 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
2019/08/17 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
后勤工作职责
2013/12/22 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
个人收入证明格式
2015/06/24 职场文书