代码分析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 相关文章推荐
不错的新闻标题颜色效果
Dec 10 Javascript
Javascript setInterval的两种调用方法(实例讲解)
Nov 29 Javascript
js定时调用方法成功后并停止调用示例
Apr 08 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
May 02 Javascript
JavaScript中的substr()方法使用详解
Jun 06 Javascript
javascript弹出窗口实现代码
Nov 12 Javascript
Vue2.0用户权限控制解决方案的示例
Feb 10 Javascript
Vue写一个简单的倒计时按钮功能
Apr 20 Javascript
Vue单页及多页应用全局配置404页面实践记录
May 22 Javascript
angular2实现统一的http请求头方法
Aug 13 Javascript
JavaScript实用代码小技巧
Aug 23 Javascript
JavaScript常用工具方法封装
Feb 12 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下载远程文件的3种方法
2015/12/29 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
php 实现进制相互转换
2016/04/07 PHP
PHP引用的调用方法分析
2016/04/25 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
2016/12/23 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
简单实现js悬浮导航效果
2017/02/05 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
详解React 在服务端渲染的实现
2017/11/16 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
webpack之devtool详解
2018/02/10 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
2018/08/31 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
Python实现图片转字符画的示例代码
2017/08/21 Python
Django Admin 实现外键过滤的方法
2017/09/29 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
2018/03/14 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
Python paramiko使用方法代码汇总
2020/11/20 Python
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
生物科学专业个人求职信范文
2013/12/05 职场文书
演讲稿开场白
2014/01/13 职场文书
市场营销专业应届生自荐信
2014/06/19 职场文书
cf战队收人口号
2014/06/21 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang