代码分析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 相关文章推荐
两个SUBMIT按钮,如何区分处理
Aug 22 Javascript
javascript判断机器是否联网的2种方法
Aug 09 Javascript
使用js完成节点的增删改复制等的操作
Jan 02 Javascript
jQuery中has()方法用法实例
Jan 06 Javascript
JavaScript中省略元素对数组长度的影响
Oct 26 Javascript
微信端开发--登录小程序步骤
Jan 11 Javascript
基于easyui checkbox 的一些操作处理方法
Jul 10 Javascript
微信小程序实现文字跑马灯效果
May 26 Javascript
vue webpack重写cookie路径的方法
Jul 10 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
Jul 31 Javascript
JS实现移动端双指缩放和旋转方法
Dec 13 Javascript
使用JS来动态操作css的几种方法
Dec 18 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
天津市收音机工业发展史
2021/03/04 无线电
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
php实现socket推送技术的示例
2017/12/20 PHP
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
js星星评分效果
2014/07/24 Javascript
JS常用函数使用指南
2014/11/23 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
2016/08/17 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
JavaScript实现换肤功能
2017/09/15 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
Vue框架下引入ActiveX控件的问题解决
2019/03/25 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
python requests 库请求带有文件参数的接口实例
2019/01/03 Python
CSS3模块的目前的状况分析
2010/02/24 HTML / CSS
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
SQL面试题
2013/04/30 面试题
平面设计师的工作职责
2013/11/21 职场文书
优秀员工自荐书范文
2013/12/08 职场文书
农林环境专业求职信
2014/03/13 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
工伤私了协议书范本
2014/11/24 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
小学体育教学随笔
2015/08/14 职场文书
Python数据分析之绘图和可视化详解
2021/06/02 Python
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏