jQuery核心结构简单分析
- 以下分析均采取沙箱模式
(function (window) {
//为了提高性能把需要的变量统一提前声明
var arr = [],
push = arr.push;
//为区别jQuery,此文章以iQuery来定义封装的函数
function iQuery( selector ) {
return new iQuery.fn.init( selector );
}
//为了方便把iQuery的原型定义为fn,并为原型添加两个方法
iQuery.fn = iQuery.prototype = function () {
constructor: iQuery,
each: function ( callback ) {
return iQuery.each( this, callback );
},
map: function ( callback ) {
return iQuery.map( this, callback );
},
}
//把所有的方法都挂载到iQuery上
iQuery.select = function (selector) {
return slice.apply( document.querySelectorAll( selector ) );
};
iQuery.each = function ( arr, callBack ) {
for ( var i = 0; i < arr.length; i++ ) {
if ( arr.length >= 0 ) {
if ( callBack.call( arr[i], i, arr[i] ) == false ) break;
} else {
for ( var k in arr ) {
if ( callBack.call( arr[k], k, arr[k] ) == false ) break;
}
}
}
};
iQuery.map = function ( arr, callback ) {
var rest = [], tmp,
i;
if ( arr.length >= 0 ) {
for ( i = 0; i < arr.length; i++ ) {
tmp = callback( arr[ i ], i );
if ( tmp != null ) {
rest.push( tmp );
}
}
} else {
for ( i in arr ) {
tmp = callback( arr[ i ], i );
if ( tmp != null ) {
rest.push( tmp );
}
}
}
return rest;
};
//init为构造函数,而且jQuery的巧妙之处就是iQuery和init公用一个原型,并且init是iQuery的一个成员
var init = iQuery.fn,init = function ( selector ) {
push.apply( this, iQuery.select( selector ) );
}
init.prototype = iQuery.fn;
})(window)
jQuery核心结构简单分析的更多相关文章
- ffplay.c函数结构简单分析(画图)
最近重温了一下FFplay的源代码.FFplay是FFmpeg项目提供的播放器示例.尽管FFplay只是一个简单的播放器示例,它的源代码的量也是不少的.之前看代码,主要是集中于某一个"点&q ...
- ffplay.c函数结构简单分析(绘图)
近期重温了一下FFplay的源码. FFplay是FFmpeg项目提供的播放器演示样例.虽然FFplay不过一个简单的播放器演示样例,它的源码的量也是不少的. 之前看代码,主要是集中于某一个" ...
- jquery原理的简单分析,让你扒开jquery的小外套。
引言 最近LZ还在消化系统原理的第三章,因此这部分内容LZ打算再沉淀一下再写.本次LZ和各位来讨论一点前端的内容,其实有关jquery,在很久之前,LZ就写过一篇简单的源码分析.只不过当时刚开始写博客 ...
- ffmpeg.c函数结构简单分析(画图)
前一阵子研究转码的时候看了FFmpeg的源代码.由于ffmpeg.c的代码相对比较长,而且其中有相当一部分是AVFilter有关的代码(这一部分一直不太熟),因此之前学习FFmpeg的时候一直也没有好 ...
- Ionic4.x 项目结构简单分析
新建项目 e2e:端对端测试文件 node_modules :项目所需要的依赖包 resources :android/ios 资源(更换图标和启动动画) src:开发工作目录,页面.样式.脚本和图片 ...
- FFmpeg源代码简单分析:结构体成员管理系统-AVOption
===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...
- FFmpeg源代码简单分析:结构体成员管理系统-AVClass
===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...
- FFmpeg源代码简单分析:常见结构体的初始化和销毁(AVFormatContext,AVFrame等)
===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...
- [转载] FFmpeg源代码简单分析:常见结构体的初始化和销毁(AVFormatContext,AVFrame等)
===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...
随机推荐
- 我的vi/vim配置文件
位于/etc/vim/的vimrc " All system-wide defaults are set in $VIMRUNTIME/debian.vim and sourced by & ...
- SUI Mobile框架开发,android、ios表单遇到的问题
1.页面添加区域滚动,滚动区域内元素事件无效问题 解决方法: <script type="text/javascript" charset="utf-8" ...
- Lua 5.2 Reference Manual
Lua 5.2 Reference Manual.pdf
- mysql支持的数据类型及其测试
原文:mysql支持的数据类型及其测试 1.基础知识 1.1如何来查看mysql的帮助手册 ?int Help float; 1.2创建表的规则 CREATE TABLE [IF NOT EXISTS ...
- jQuery百叶窗图片滑块
超酷的jQuery百叶窗图片滑块实现教程 今天我们要来分享一款基于jQuery的百叶窗焦点图插件,也可以说是图片滑块插件.这种jQuery焦点图插件的应用非常广泛,在早些年前,我们需要用flash ...
- Mock原理学习
同事搓蛋问了我一个问题,mock的原理是啥,没怎么想出来,于是花了点时间学习了一下. 从Moq这个库入手:https://github.com/moq/moq4 Moq用到了Castle的库用于Dyn ...
- 如果gen.lib.rus.ec这个电子书下载站上不去了,那就用这个吧
如果著名的gen.lib.rus.ec这个电子书下载站上不去了,那就用这个吧: 万千合集站 http://www.hejizhan.com/ 里面除了镜像索引了gen.lib.rus.ec上的所有英文 ...
- 利用Readability解决网页正文提取问题
分享: 利用Readability解决网页正文提取问题 做数据抓取和分析的各位亲们, 有没有遇到下面的难题呢? - 如何从各式各样的网页中提取正文!? 虽然可以用SS为各种网站写脚本做解析, 但是 ...
- ImageMagick利用蒙版合成图片
先看合成后的效果图. 需要的图片素材: 1.一张图片(335x600) 2.一张蒙版图片(335x600) 3.一张相框图片(335x600) 第一步,根据蒙板和图片,截取图片.而且所截取的图片之外的 ...
- 实践Scrum
http://blog.vsharing.com/agiledo/ [原创]敏捷开发实践-我们这样实践Scrum-续(81页) 我们团队实践Scrum,有一些做法和教训,希望和大家分享: 公司背景:通 ...