代码分析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 相关文章推荐
关于 byval 与 byref 的区别分析总结
Oct 08 Javascript
JQuery困惑—包装集 DOM节点
Oct 16 Javascript
jquery获取下拉列表的值为null的解决方法
Mar 18 Javascript
jquery中get和post的简单实例
Feb 04 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
May 29 Javascript
基于Vue.js实现简单搜索框
Mar 26 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
Dec 13 Javascript
浅谈mint-ui 填坑之路
Nov 06 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
May 22 Javascript
了解javascript中变量及函数的提升
May 27 Javascript
一文看懂如何简单实现节流函数和防抖函数
Sep 05 Javascript
使用react+redux实现计数器功能及遇到问题
Jun 02 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/02 无线电
一个php作的文本留言本的例子(二)
2006/10/09 PHP
用PHP查询搜索引擎排名位置的代码
2010/01/05 PHP
php Smarty 字符比较代码
2011/02/27 PHP
PHP使用静态方法的几个注意事项
2014/09/16 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
tagName的使用,留一笔
2006/06/26 Javascript
js 操作css实现代码
2009/06/11 Javascript
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
angularJS 中input示例分享
2015/02/09 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
深入理解MVC中的时间js格式化
2016/05/19 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
python实现斐波那契递归函数的方法
2014/09/08 Python
解决sublime+python3无法输出中文的问题
2018/12/12 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
描述RIP和OSPF区别以及特点
2015/01/17 面试题
电脑饰品店的创业计划书
2014/01/21 职场文书
防火标语大全
2014/10/06 职场文书
品质保证书格式
2015/02/28 职场文书
泰坦尼克号观后感
2015/06/04 职场文书
少先大队干部竞选稿
2015/11/20 职场文书