代码分析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 相关文章推荐
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
Jan 22 Javascript
ExtJS 2.0实用简明教程 之Border区域布局
Apr 29 Javascript
juqery 学习之三 选择器 可见性 元素属性
Nov 25 Javascript
js简单实现删除记录时的提示效果
Dec 05 Javascript
javascript学习笔记(八)正则表达式
Oct 08 Javascript
onclick和onblur冲突问题的快速解决方法
Apr 28 Javascript
javascript如何定义对象数组
Jun 07 Javascript
浅谈jQuery中的checkbox问题
Aug 10 Javascript
JS简单生成随机数(随机密码)的方法
May 11 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
Dec 14 Javascript
浅谈实现vue2.0响应式的基本思路
Feb 13 Javascript
微信小程序实现时间预约功能
Nov 27 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解析html类库simple_html_dom的转码bug
2014/05/22 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
jQuery EasyUI NumberBox(数字框)的用法
2010/07/08 Javascript
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
原生js实现class的添加和删除简单代码
2016/07/12 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
2016/11/09 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
Python中zip()函数用法实例教程
2014/07/31 Python
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
python实现汉诺塔递归算法经典案例
2021/03/01 Python
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
详解python itertools功能
2020/02/07 Python
keras小技巧——获取某一个网络层的输出方式
2020/05/23 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
用canvas显示验证码的实现
2020/04/10 HTML / CSS
英国在线花园中心:You Garden
2018/06/03 全球购物
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
美德好少年主要事迹
2014/01/29 职场文书
养生餐厅创业计划书范文
2014/03/26 职场文书
鲁迅故居导游词
2015/02/05 职场文书
信仰观后感
2015/06/03 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android