noop方法

jQuery.noop()函数是一个空函数,它什么也不做。

当某些时候你需要传入函数参数,而且希望它什么也不做的时候,你可以使用该函数,也无需再新建一个空的函数。

示例:

// 传入一个空函数作为参数,返回一个空数组
// 空函数的返回值为undefined,而null或undefined值会被$.map()忽略掉。
var result = $.map( [1, 2, 3], $.noop );
document.writeln( result.length ); //

源码分析:

noop: function() {},

camelCase方法

jQuery.camelCase函数的功能就是将形如background-color转化为驼峰表示法:backgroundColor。 
此函数在jQuery的data函数,以及涉及到css的诸多函数中都有用到。

示例:

var cssStr='background-color';
alert($.camelCase(cssStr)); //backgroundColor

源码分析:

// Convert dashed to camelCase; used by the css and data modules
// Microsoft forgot to hump their vendor prefix (#9572)
camelCase: function( string ) {
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
},

该方法的使用主要依赖以下3个正则表达式

// Matches dashed string for camelizing
rdashAlpha = /-([a-z]|[0-9])/ig,
rmsPrefix = /^-ms-/, // Used by jQuery.camelCase as callback to replace()
fcamelCase = function( all, letter ) {
return ( letter + "" ).toUpperCase();
},

正则 rdashAlpha 用于匹配字符串中连字符“ -”和其后的第一个字母或数字。如果连字符“ -”后是字母,则匹配部分会被替换为对应的大写字母;如果连字符“ -”后是数字,则会删掉连字符“-” ,保留数字

正则 rmsPrefix 用于匹配字符串中前缀“-ms-” ,匹配部分会被替换为“ms-” 。这么做是因为在 IE 中,连字符式的样式名前缀“-ms-”对应小写的“ms” ,而不是驼峰式的“ Ms” 。例如, “ -ms-transform”对应“ msTransform”而不是“ MsTransform” 。在 IE 以外的浏览器中,连字符式的样式名则可以正确地转换为驼峰式,例如, “ -moz-transform”对应“MozTransform”。

函数 fcamelCase() 负责把连字符后的字母转换为大写并返回

在方法 jQuery.camelCase() 中,先用正则 rmsPrefix 匹配前缀“ -ms-” ,如果有则修正为“ms-” ;

然后用正则 rdashAlpha 匹配连字符“-”和其后的第一个字母或数字,并用字符串方法 replace() 和函数 fcamelCase() 把匹配部分替换为对应的大写字母或数字

nodeName方法

jQuery.nodeName( elem, name ) 用于检查 DOM 元素的节点名称(即属性 nodeName)与指定的值是否相等,检查时忽略大小写

示例:

alert($.nodeName(document.getElementsByTagName('div')[0],'div'));//true

源码分析:

nodeName: function( elem, name ) {
return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
},

接收两个参数,一个是dom元素,一个是待检测的节点名称,直接返回这两个参数转化为大写之后作全等比较的结果,当然在比较之前首先要保证elem必须是dom节点

trim方法

jQuery.trim( str ) 用于移除字符串开头和结尾的空白符如果传入的参数是 null 或undefined,则返回空字符串;如果传入的参数是对象,则先获取对象的字符串表示,然后移除开头和结尾的空白符,并返回

示例:

var str='  abcdefg   ';
alert(str.indexOf(' ')); //
alert($.trim(str).indexOf(' ')); //-1

源码分析:

// Use native String.trim function wherever possible
trim: trim ?
function( text ) {
return text == null ?
"" :
trim.call( text );
} : // Otherwise use our own trimming functionality
function( text ) {
return text == null ?
"" :
text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
},

trim方法是ECMA5新增的方法,对于支持此方法的浏览器而言可以直接调用,如果传入的是null会返回一个空字符串,对于不支持此trim方法的浏览器来说使用正则匹配

// IE doesn't match non-breaking spaces with \s
if ( rnotwhite.test( "\xA0" ) ) {
trimLeft = /^[\s\xA0]+/;
trimRight = /[\s\xA0]+$/;
}

在 IE 9 以下的浏览器中,\s 不匹配不间断空格 \xA0,需要为正则trimLeft 和 trimRight 加上“\xA0”

先调用toString方法说明是可以传入对象或者数组的,如果是对象或者数组就用他们的字符串形式来操作,分别匹配到左右空格之后替换为空字符串(不是含有空格的字符串)

 

jQuery静态方法noop,camelCase,nodeName,trim使用和源码分析的更多相关文章

  1. jQuery静态方法isFunction,isArray,isWindow,isNumeric使用和源码分析

    上一篇随笔中总结了js数据类型检测的几个方法和jQuery的工具方法type方法,本篇要分析几个方法都依赖type方法,所以不了解type方法的请先参看http://www.cnblogs.com/y ...

  2. Quartz学习--二 Hello Quartz! 和源码分析

    Quartz学习--二  Hello Quartz! 和源码分析 三.  Hello Quartz! 我会跟着 第一章 6.2 的图来 进行同步代码编写 简单入门示例: 创建一个新的java普通工程 ...

  3. Android Debuggerd 简要介绍和源码分析(转载)

    转载: http://dylangao.com/2014/05/16/android-debuggerd-%E7%AE%80%E8%A6%81%E4%BB%8B%E7%BB%8D%E5%92%8C%E ...

  4. Java并发编程(七)ConcurrentLinkedQueue的实现原理和源码分析

    相关文章 Java并发编程(一)线程定义.状态和属性 Java并发编程(二)同步 Java并发编程(三)volatile域 Java并发编程(四)Java内存模型 Java并发编程(五)Concurr ...

  5. Kubernetes Job Controller 原理和源码分析(一)

    概述什么是 JobJob 入门示例Job 的 specPod Template并发问题其他属性 概述 Job 是主要的 Kubernetes 原生 Workload 资源之一,是在 Kubernete ...

  6. Kubernetes Job Controller 原理和源码分析(二)

    概述程序入口Job controller 的创建Controller 对象NewController()podControlEventHandlerJob AddFunc DeleteFuncJob ...

  7. Kubernetes Job Controller 原理和源码分析(三)

    概述Job controller 的启动processNextWorkItem()核心调谐逻辑入口 - syncJob()Pod 数量管理 - manageJob()小结 概述 源码版本:kubern ...

  8. jQuery静态方法inArray,grep,merge,makeArray方法使用和源码分析

    inArray方法 确定第一个参数在数组中的位置,从0开始计数(如果没有找到则返回 -1 ). 示例: var arr = [ 4, "Pete", 8, "John&q ...

  9. jQuery静态方法globalEval使用和源码分析

    Eval函数大家都很熟悉,但是globalEval方法却很少使用,大多数参考手册也没有相关api,下面就对其用法和源码相应介绍: jQuery.globalEval()函数用于全局性地执行一段Java ...

随机推荐

  1. Hibernate框架的配置

    概念 持久化框架 把对象保存到数据库中,对数据的CURD操作 配置Hibernate 1.在项目中引入Hibernate的Jar包 在 WebContent/WEB-INF/lib 目录下 导入jar ...

  2. Excel 导入到Datatable 中,再使用常规方法写入数据库

    首先呢?要看你的电脑的office版本,我的是office 2013 .为了使用oledb程序,需要安装一个引擎.名字为AccessDatabaseEngine.exe.这里不过多介绍了哦.它的数据库 ...

  3. 当GitHub把我当成DDos攻击者拉进了黑名单中。。。

    Github黑名单自救+快速稳定FQ 异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html 原因:项目冲突,没有先更新后提交,他自行更 ...

  4. 分享一个LiteDB做的简单考试系统辅助工具

    凌晨,被安排在公司值班,因为台风“灿鸿”即将登陆,风力太大,办公楼,车间等重要部分需要关注.所以无聊,那就分享一下,今天给朋友临时做的一个小的考试系统辅助工具吧.其实非常小,需求也很简单,但是可以根据 ...

  5. 应用程序框架实战十六:DDD分层架构之值对象(介绍篇)

    前面介绍了DDD分层架构的实体,并完成了实体层超类型的开发,同时提供了验证方面的支持.本篇将介绍另一个重要的构造块——值对象,它是聚合中的主要成分. 如果说你已经在使用DDD分层架构,但你却从来没有使 ...

  6. 在web上逐行输出较大的txt文件

    在某些场景下,需要在web上展示一些日志文件,这些日志文件是放在文件服务器上的一些txt. 当日志文件很大时,下载日志会导致页面长时间卡住,一直在loading状态,而且下载完日志之后分析日志并生成d ...

  7. Notes:DOM的事件模拟

    首先使用document对象的createEvent方法创建一个事件对象,然后初始化该事件对象,接着使用支持事件DOM节点的dispatchEvent方法触发事件. DOM2级事件和DOM3级事件有些 ...

  8. 编写简单的ramdisk(无请求队列)

    最近在研究块设备驱动的编写,看了赵磊大牛的<写一个块设备驱动>,受益匪浅,虽然能看懂里面说的,但动手写写代码还是能加深理解的,下面实现的ramdisk写的很简单,如果有错误,欢迎大牛们指正 ...

  9. objective-c中的@selector()和 c /c++的函数指针

    先看tomcat里用到的代码: //然后开始动画 //把图片放到animationImages,接受数组参数 self.tom.animationImages = arrayImage; //设置时间 ...

  10. java操作数据库增删改查的小工具1--TxQueryRunner

    在java程序中,一般使用jdbc连接数据库,比较麻烦,在看传智教程时学了一个工具类,用于简化与数据库之间的操作步骤,就是TxQueryRunner,他是QueryRunner的子类,用起来和他是一样 ...