代码分析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实现div阴影效果示例代码
Sep 16 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
Jun 09 Javascript
Javascript 是你的高阶函数(高级应用)
Jun 15 Javascript
浅谈JSON.parse()和JSON.stringify()
Jul 14 Javascript
详解JavaScript时间格式化
Dec 23 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
Dec 20 Javascript
详解Vue中localstorage和sessionstorage的使用
Dec 22 Javascript
详解Vue demo实现商品列表的展示
May 07 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
May 14 Javascript
JavaScript生成随机验证码代码实例
Sep 28 Javascript
15分钟学会vue项目改造成SSR(小白教程)
Dec 17 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
May 15 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
一个PHP的String类代码
2010/04/20 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
php获取淘宝分类id示例
2014/01/16 PHP
php实现字符串翻转的方法
2015/03/27 PHP
简单概括PHP的字符串中单引号与双引号的区别
2016/05/07 PHP
浅谈PHP中try{}catch{}的使用方法
2016/12/09 PHP
php 中的closure用法详解
2017/06/12 PHP
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
加速IE的Javascript document输出的方法
2010/12/02 Javascript
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
Javascript技术难点之apply,call与this之间的衔接
2015/12/04 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
ArtEditor富文本编辑器增加表单提交功能
2016/04/18 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
Windows系统下安装Python的SSH模块教程
2015/02/05 Python
Python装饰器用法实例总结
2018/05/26 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
2020/08/19 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
12岁生日感言
2014/01/21 职场文书
绿色环保标语
2014/06/12 职场文书