代码分析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 相关文章推荐
硬盘浏览程序,保存成网页格式便可使用
Dec 03 Javascript
jquery 无限级联菜单案例分享
Mar 26 Javascript
js中array的sort()方法使用介绍
Feb 20 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
Aug 04 Javascript
Node.js检测端口(port)是否被占用的简单示例
Sep 29 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
Jul 09 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
Dec 19 Javascript
react 移动端实现列表左滑删除的示例代码
Jul 04 Javascript
JavaScript实现飞舞的泡泡效果
Feb 07 Javascript
解决Nuxt使用axios跨域问题
Jul 06 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
Aug 07 Javascript
vue 获取url参数、get参数返回数组的操作
Nov 12 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提取中英文词语以及数字的首字母的方法介绍
2013/04/23 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
javascript实现回到顶部特效
2015/05/06 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
javascript获取select值的方法完整实例
2019/06/20 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
简单的Python抓taobao图片爬虫
2014/10/26 Python
Python __setattr__、 __getattr__、 __delattr__、__call__用法示例
2015/03/06 Python
Python利用Beautiful Soup模块搜索内容详解
2017/03/29 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
python dict 相同key 合并value的实例
2019/01/21 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
给孩子的新年寄语
2014/04/08 职场文书
幼儿园家长评语大全
2014/04/16 职场文书
家长高考寄语
2015/02/27 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
安全教育的主题班会
2015/08/13 职场文书
《三国志》赏析
2019/08/27 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
django如何自定义manage.py管理命令
2021/04/27 Python
JS数组去重详情
2021/11/07 Javascript
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers