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. 【hadoop2.2(yarn)】基于yarn成功执行分布式map-reduce,记录问题解决过程。

    hadoop2.x改进了hadoop1.x的架构, 具体yarn如何工作以及改进了什么可以在网上学, 这里仅记录我个人搭建的问题和理解,希望能帮助遇到困难的朋友. 在开始前,必须了解yarn版本的ma ...

  2. vs运行时候冒了这个错:无法启动IIS Express Web 服务器~Win10

    后期会在博客首发更新:http://dnt.dkill.net 异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 网上的方法多种, ...

  3. 【转】Linux C动态内存泄漏追踪方法

    原文:http://www.cnblogs.com/san-fu-su/p/5737984.html C里面没有垃圾回收机制,有时候你申请了动态内存却忘记释放,这就尴尬了(你的程序扮演了强盗角色,有借 ...

  4. java静态代理与动态代理

    原文链接:http://www.orlion.ga/207/ 一.代理模式 代理模式是经常用到的设计模式,代理模式是给指定对象提供代理对象.由代理对象来控制具体对象的引用. 代理模式涉及到的角色: 抽 ...

  5. 深入理解DOM事件机制系列第四篇——事件模拟

    × 目录 [1]引入 [2]模拟机制 [3]自定义事件 前面的话 事件是网页中某个特别的瞬间,经常由用户操作或通过其他浏览器功能来触发.但实际上,也可以使用javascript在任意时刻来触发特定的事 ...

  6. Web前端框架与类库的思考

    说起前端框架,我也是醉了.现在去面试或者和同行聊天,动不动就这个框架碉堡了,那个框架好犀利. 当然不是贬低框架,只是有一种杀鸡焉用牛刀的感觉.网站技术是为业务而存在的,除此毫无意义,框架也是一样.在技 ...

  7. IO通道

    本文原创,转载需标明原处. 通道,主要负责传输数据,相当于流,但流只能是输入或输出类型中的其一,而通道则可以兼并二者. 通道的基类是:Channel boolean isOpen() void clo ...

  8. [linux]ssh(转载)

    ssh登陆问题 SSH分客户端openssh-client和openssh-server 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则su ...

  9. Android APP压力测试(二)之Monkey信息自动收集脚本

      Android APP压力测试(二) 之Monkey信息自动收集脚本 前言: 上一篇Monkey介绍基本搬抄官方介绍,主要是为了自己查阅方便.本文重点介绍我在进行Monkey时如何自动收集相关信息 ...

  10. 程序集与反射技术(C#)

    首先我们来看程序集,程序集是代码进行编译是的一个逻辑单元,把相关的代码和类型进行组合,然后生成PE文件(例如可执行文件.exe和类库文件.dll).由于程序集在编译后并不一定会生成单个文件,而可能会生 ...