代码分析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 相关文章推荐
Jquery 表单取值赋值的一些基本操作
Oct 11 Javascript
锋利的jQuery 要点归纳(二) jQuery中的DOM操作(下)
Mar 23 Javascript
jquery 仿QQ校友的DIV模拟窗口效果源码
Mar 24 Javascript
基于jquery的滚动鼠标放大缩小图片效果
Oct 27 Javascript
使用Grunt.js管理你项目的应用说明
Apr 24 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
Oct 05 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
Nov 16 Javascript
javaScript基础详解
Jan 19 Javascript
使用 Node.js 对文本内容分词和关键词抽取
May 27 Javascript
BootStrap中Table隐藏后显示问题的实现代码
Aug 31 Javascript
layui实现tab的添加拒绝重复的方法
Sep 04 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
Oct 22 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
解决控件遮挡问题:关于有窗口元素和无窗口元素
2007/01/28 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
javascript+xml技术实现分页浏览
2008/07/27 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
vue配置请求本地json数据的方法
2018/04/11 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
JavaScript字符和ASCII实现互相转换
2020/06/03 Javascript
使用python绘制人人网好友关系图示例
2014/04/01 Python
Python开发WebService系列教程之REST,web.py,eurasia,Django
2014/06/30 Python
Python字符串处理之count()方法的使用
2015/05/18 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
Python列表list操作相关知识小结
2020/01/29 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
HTML5 本地存储 LocalStorage详解
2016/06/24 HTML / CSS
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
在线购买澳大利亚设计师手拿包和奢华晚装手袋:Olga Berg
2019/03/20 全球购物
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
一些Unix笔试题和面试题
2013/01/22 面试题
软件测试工程师笔试题带答案
2015/03/27 面试题
教学实习自我评价
2014/01/28 职场文书
小学班主任评语大全
2014/04/23 职场文书
培训师岗位职责
2015/02/14 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP