代码分析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 相关文章推荐
获取HTML DOM节点元素的方法的总结
Aug 21 Javascript
Jquery getJSON方法详细分析
Dec 26 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
Jun 10 Javascript
JS中产生标识符方式的演变
Jun 12 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
Oct 24 Javascript
BootStrap中的表单大全
Sep 07 Javascript
js原生跨域_用script标签的简单实现
Sep 24 Javascript
有趣的bootstrap走动进度条
Dec 01 Javascript
bootstrap datepicker插件默认英文修改为中文
Jul 28 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
Aug 21 Javascript
Vue.Draggable拖拽功能的配置使用方法
Jul 29 Javascript
Vue动态组件与异步组件实例详解
Feb 23 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中一个完整表单处理实现代码
2011/11/10 PHP
php中serialize序列化与json性能测试的示例分析
2013/04/27 PHP
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
2016/03/16 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
js中数组排序sort方法的原理分析
2014/11/20 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
Python连接字符串过程详解
2020/01/06 Python
使用K.function()调试keras操作
2020/06/17 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
德国50岁以上交友网站:Lebensfreunde
2020/03/18 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
土木工程专业大学毕业生求职信
2013/10/13 职场文书
车间操作工岗位职责
2013/12/19 职场文书
小学生红领巾广播稿
2014/01/21 职场文书
大学生自我鉴定评语
2014/01/27 职场文书
2014年幼儿园后勤工作总结
2014/11/10 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
2016国培研修心得体会
2016/01/08 职场文书