jQuery源码研究:选择器模块所用方法(1)
时间:2019-01-11
本文章向大家介绍jQuery源码研究:选择器模块所用方法(1),主要包括jQuery源码研究:选择器模块所用方法(1)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Sizzle
模块第二篇。
顺序看下去,看模块所用的方法。
2、createCache()
方法,创建一个受限的键值对类型缓存。返回的是一个函数,
function createCache(){
var keys = [];
function cache( key, value ){
//向数组`keys`末尾添加元素时,返回新的长度。
if( keys.push( key + ' ' ) > Expr.cacheLength ){
//新的数组长度大于Expr.cacheLength时,删除数组当前首位的元素在对象cache中的缓存
delete cache[ keys.shift() ];
}
//返回 缓存后的对象
return ( cache[ key + ' ' ] = value );
}
//返回缓存方法
return cache;
}
返回的cache
函数,个中实现解释:Expr.cacheLength
就自定义的长度,默认值为50
。
3、markFunction()
标记一个特定的函数
function markFunction( fn ){
fn[ expando ] = true;
return fn;
}
为fn
函数添加一个唯一值的参数并返回。expando
是一个字符串,expando = "sizzle" + 1 * new Date()
。
4、assert()
方法,检测所用元素是否可用。看assert这个单词的含义即知,是一个断言方法。该方法主要用在检测元素是否可用方面。
function assert( fn ){
var el = document.createElement( 'fieldest' );
try {
return !!fn(el);
} catch(e) {
return false;
} finally { // try catch语句无论有无异常都执行finally
//从默认父节点删除自身
if( el.parentNode ){
el.parentNode.removeChild( el );
}
//在IE中释放内存 -- 兼容性
el = null;
}
}
Sizzle
模块第三篇。
5、addHandle()
方法:为所有指定的属性添加处理函数
function addHandle( attrs, handle ){
var arr = attrs.split("|"), //将字符串attrs根据符号|分割成数组
i = arr.length;
while( i-- ){
Expr.attrHandle[ arr[i] ] = handler; //将handler函数添加到attrHandle对象的arr[i]属性中
}
}
喜欢本文请扫下方二维码,关注微信公众号: 前端小二,查看更多我写的文章哦,多谢支持。
- golang简单tls协议用法完整示例
- spark开发环境详细教程1:IntelliJ IDEA使用详细说明
- MySQL数据库(五):索引
- hdu----(1466)计算直线的交点数(dp)
- golang模板template自定义函数用法示例
- 程序员你为什么这么累【续】:编写简陋的接口调用框架 - 动态代理学习
- hdu---(Tell me the area)(几何/三角形面积以及圆面积的一些知识)
- MySQL数据库(六):体系结构和存储引擎
- hdu----(2222)Keywords Search(trie树)
- MySQL数据库(七):数据导出与导入
- flume与kafka整合高可靠教程
- Oracle 12c系列(一)|多租户容器数据库
- Spring Security入门(三):密码加密
- MySQL数据库(八):表记录的基本操作(增删改查)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 详解 Cookie,Session,Token
- SSM 单体框架 - 前端开发:课程和广告模块
- 80 行 Python 代码写个图形计算器
- 近期对libatapp的一些优化调整(增加服务发现和连接管理,支持yaml等)
- SSM 单体框架 - 前端开发:用户和权限模块
- Cnitch:一款Docker引擎运行进程权限检测工具
- SAP Spartacus BrowserPlatformLocation的初始化逻辑
- 重启 CentOS 7 系统后的 IP 地址问题
- SSM 单体框架 - 前端开发:用户权限控制,Nginx 和项目部署与发布
- 用 Python 制作飞机大战小游戏
- SSM 单体框架 - 前端开发:视频讲解
- MyBatis 的 `<if test="">` 语句里面使用反单引号的问题
- 30 个Python代码实现的常用功能,精心整理版
- Java 后台开发面试题分享一
- IDEA 报错:no tests were found 和 UnsupportedOperationException