代码分析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 1.42 checkbox 全选和反选代码
Mar 27 Javascript
Jquery 绑定时间实现代码
May 03 Javascript
js局部刷新页面时间具体实现
Jul 04 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
Sep 07 Javascript
七个不允许错过的jQuery小技巧
Dec 21 Javascript
学习使用bootstrap3栅格系统
Apr 12 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
Sep 28 Javascript
微信小程序 参数传递实例代码
Mar 20 Javascript
原生js封装自定义滚动条
Mar 24 Javascript
Vue单页应用引用单独的样式文件的两种方式
Mar 30 Javascript
vue 翻页组件vue-flip-page效果
Feb 05 Javascript
使用原生JS实现滚轮翻页效果的示例代码
May 31 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/01 无线电
德生S2000电路分析
2021/03/02 无线电
Banner程序
2006/10/09 PHP
PHP5函数小全(分享)
2013/06/06 PHP
PHP基于单例模式实现的数据库操作基类
2016/01/15 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
2018/08/17 PHP
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
jquery模拟SELECT下拉框取值效果
2013/10/23 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
基于 webpack2 实现的多入口项目脚手架详解
2017/06/26 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
使用Angular自定义字段校验指令的方法示例
2019/02/01 Javascript
浅谈对于react-thunk中间件的简单理解
2019/05/01 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
vue实现防抖的实例代码
2021/01/11 Vue.js
Python中使用item()方法遍历字典的例子
2014/08/26 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
求职自我评价范文
2015/03/09 职场文书
简爱读书笔记
2015/06/26 职场文书
三八节活动简报
2015/07/20 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
如何用python反转图片,视频
2021/04/24 Python