代码分析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 相关文章推荐
鼠标经过显示二级菜单js特效
Aug 13 Javascript
Bootstrap所支持的表单控件实例详解
May 16 Javascript
jquery插件格式实例分析
Jun 16 Javascript
Angular2学习笔记——详解NgModule模块
Dec 02 Javascript
浅谈jQuery hover(over, out)事件函数
Dec 03 Javascript
vue-cli系列之vue-cli-service整体架构浅析
Jan 14 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
Jun 10 jQuery
微信小程序 扭蛋抽奖机css3动画实现详解
Jul 19 Javascript
layui table 表格模板按钮的实例代码
Sep 21 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
Jun 05 Javascript
深入理解javascript中的this
Feb 08 Javascript
vue 数据双向绑定的实现方法
Mar 04 Vue.js
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 Undefined index和Undefined variable的解决方法
2008/03/27 PHP
用PHP实现的四则运算表达式计算实现代码
2011/08/02 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
2015/04/14 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
2015/11/24 Javascript
简单实现js浮动框
2016/12/13 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
JavaScript中transform实现数字翻页效果
2017/03/08 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
Python3 Random模块代码详解
2017/12/04 Python
Python实现邮件的批量发送的示例代码
2018/01/23 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
python3将变量写入SQL语句的实现方式
2020/03/02 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
经济担保书范文
2014/04/02 职场文书
办理房产证委托书
2014/09/18 职场文书
干部作风建设工作总结
2014/10/29 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
Django中session进行权限管理的使用
2021/07/09 Python
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android