代码分析jQuery四种静态方法使用


Posted in Javascript onJuly 23, 2015

jQery每一个方法都有对应代码解析,非常详细,具有介绍请看下文:

isFunction方法

用于测试是否为函数的对象

示例:

function stub() {
  }
var objs = [
      function () {},
      { x:15, y:20 },
      null,
      stub,
      "function"
     ];
    jQuery.each(objs, function (i) {
    var isFunc = jQuery.isFunction(objs[i]);
    $("span:eq( " + i + ")").text(isFunc);
 })

运行结果:

[ true,false,false,true,false ]

源码分析:

 

// See test/unit/core.js for details concerning isFunction.
// Since version 1.3, DOM methods and functions like alert
// aren't supported. They return false on IE (#2968).
isFunction: function( obj ) {
   return jQuery.type(obj) === "function";
},

 首先就告诉你自从1.3版本就有bug ,一些dom方法和函数例如alert在ie里面会返回false,看了下这个bug,因为toString方法和valueOf方法都会被重写所以有人就提出了用instanceof方法检测但是在ie6还是有问题。目前为止这个bug还没有关闭具体大家可以从参考官网bug页因为我分析的是1.7.1所以就先按照这个版本来,这个方法就是简单的调用type方法判断其返回结果是否为字符串function
 
isArray方法

用于测试是否为数组的对象

示例:

 

$("b").append( " + $.isArray([]) );//<b>true</b>

isArray: Array.isArray || function( obj ) {
    return jQuery.type(obj) === "array";
 },

跟isFunctoin一样直接使用type方法的返回结果

isNumeric方法

确定它的参数是否是一个数字。

$.isNumeric() 方法检查它的参数是否代表一个数值。如果是这样,它返回 true。否则,它返回false。该参数可以是任何类型的

示例:

$.isNumeric("-10"); // true
$.isNumeric(16);   // true
$.isNumeric(0xFF);  // true
$.isNumeric("0xFF"); // true
$.isNumeric("8e5"); // true (exponential notation string)
$.isNumeric(3.1415); // true
$.isNumeric(+10);  // true
$.isNumeric(0144);  // true (octal integer literal)
$.isNumeric("");   // false
$.isNumeric({});   // false (empty object)
$.isNumeric(NaN);  // false
$.isNumeric(null);  // false
$.isNumeric(true);  // false
$.isNumeric(Infinity); // false
$.isNumeric(undefined); // false

源码分析:

isNumeric: function( obj ) {

        return !isNaN( parseFloat(obj) ) && isFinite( obj );

},

这个方法不是判断Number类型而是看起来像数字的类型只要传进去的参数包含数字那么就会返回true,首先使用parseFloat方法把参数转为数组,此方法会保留参数中的数字部分过滤掉其他部分,如果结果不是NaN也没有超过最大值就是true否则返回false

isWindow方法

用于测试是否为window对象

isNumeric: function( obj ) {
    return !isNaN( parseFloat(obj) ) && isFinite( obj );
},

一种粗略的方法判断对象是window,如果满足传进来的是对象而且具有setInterval方法则认为该对象为window对象,现在这个方法已经改为判断是否是窗口对象了具体以后在分析。希望大家能够喜欢以上内容所述。

Javascript 相关文章推荐
如何在标题栏显示框架内页面的标题
Feb 03 Javascript
JS支持带x身份证号码验证函数
Aug 10 Javascript
用Javascript实现锚点(Anchor)间平滑跳转
Sep 08 Javascript
Javascript 解疑
Nov 11 Javascript
onclick与listeners的执行先后问题详细解剖
Jan 07 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
Jun 21 Javascript
JS中mouseover和mouseout多次触发问题如何解决
Jun 06 Javascript
JavaScript动态数量的文件上传控件
Nov 18 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
Feb 10 Javascript
深入理解AngularJS中的ng-bind-html指令
Mar 27 Javascript
微信小程序 同步请求授权的详解
Aug 04 Javascript
基于Node的Axure文件在线预览的实现代码
Aug 28 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
Jul 22 #Javascript
HTML5实现留言和回复页面样式
Jul 22 #Javascript
javascript控制层显示或隐藏的方法
Jul 22 #Javascript
javascript实现简单查找与替换的方法
Jul 22 #Javascript
javascript数组随机排序实例分析
Jul 22 #Javascript
JavaScript对数组进行随机重排的方法
Jul 22 #Javascript
JavaScript检测上传文件大小的方法
Jul 22 #Javascript
You might like
php校验表单检测字段是否为空的方法
2015/03/20 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
php中namespace use用法实例分析
2016/01/22 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
vue中node_modules中第三方模块的修改使用详解
2019/05/31 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中title()方法的使用简介
2015/05/20 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
深入了解Python 变量作用域
2020/07/24 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
网站编辑求职信
2013/10/17 职场文书
日语专业毕业生自荐信
2013/11/11 职场文书
影视制作岗位职责
2013/12/04 职场文书
财务工作者先进事迹材料
2014/01/17 职场文书
个人工作主要事迹
2014/05/08 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
学院党委班子四风问题自查报告及整改措施
2014/10/25 职场文书
运动会加油稿50字
2015/07/21 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书