代码分析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 相关文章推荐
关于__defineGetter__ 和__defineSetter__的说明
May 12 Javascript
javascript 写类方式之七
Jul 05 Javascript
如何将一个String和多个String值进行比较思路分析
Apr 22 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
Jan 09 Javascript
js的隐含参数(arguments,callee,caller)使用方法
Jan 28 Javascript
jQuery解析json格式数据简单实例
Jan 22 Javascript
AngularJS基础 ng-dblclick 指令用法
Aug 01 Javascript
javascript中的后退和刷新实现方法
Nov 10 Javascript
详解Javascript中DOM的范围
Feb 13 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
May 13 Javascript
jquery中为什么能用$操作
Jun 18 jQuery
Vue项目中使用jsonp抓取跨域数据的方法
Nov 10 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
基于文本的搜索
2006/10/09 PHP
PHP 数组教程 定义数组
2009/10/23 PHP
php与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
PHP的PSR规范中文版
2013/09/28 PHP
PHP合并静态文件详解
2014/11/14 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
javascript 函数速查表
2010/02/07 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
JavaScript设计模式开发中组合模式的使用教程
2016/05/18 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
js实现带缓动动画的导航栏效果
2017/01/16 Javascript
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
利用10行js代码实现上下滚动公告效果
2017/12/08 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
python中的字典详细介绍
2014/09/18 Python
Python函数参数操作详解
2018/08/03 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
python3 实现口罩抽签的功能
2020/03/11 Python
python3.4中清屏的处理方法
2020/07/06 Python
简述python&amp;pytorch 随机种子的实现
2020/10/07 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
椰子猫砂:CatSpot
2018/08/27 全球购物
COSETTE官网:奢华,每天
2020/03/22 全球购物
建材投资建议书
2014/05/16 职场文书
综艺节目策划方案
2014/06/13 职场文书
公安学专业求职信
2014/07/27 职场文书
班子四风对照检查材料
2014/08/21 职场文书
上诉状格式
2015/05/23 职场文书
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python
python实现学生信息管理系统(面向对象)
2022/06/05 Python