jquery源码学习笔记一:总体结构
练武不练功,到老一场空。计算机也一样。
计算机的功,就是原理。如果程序员只会使用各种函数,各种框架,而不知其原理,顶多熟练工人而已。知其然,更要知其所以然。
jquery我们用得很爽,但它究竟咋实现的?
1、首先,jquery就是一些javascript。
而且完全就是一些原始的javascript,没有用其他第三方的库或什么的。它本身就存放在一个js文件里。
我们常常张嘴就说:
jquery是一个javascript框架
哦,可不是随便说说而已。
2、总体结构
javascript里,基本元素就是函数。从大的方面说,整个jquery,就是一个javascript的函数,以jquery-1.12.3为例,其总体结构如下:
(function( global, factory ) {
//调用factory(工厂)生成并返回jQuery实例
}(global实参, factory实参));
这个巨大的函数,声明并运行,最终目的只有一个,就是生成并返回一个jQuery实例(就是那个美元符,在这里,美元符是一个函数实例!)。
而源码的绝大部分,也就是主体部分,放在 factory实参 这里。这个 factory实参,是一个巨大无比的匿名函数。
再放大一点看看:
(function( global, factory ) {
//调用factory(工厂)生成jQuery实例
factory( global );
}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
//factory实现,jquery源码主体部分
}));
!
jquery源码学习笔记一:总体结构的更多相关文章
- jquery源码学习笔记三:jQuery工厂剖析
jquery源码学习笔记二:jQuery工厂 jquery源码学习笔记一:总体结构 上两篇说过,query的核心是一个jQuery工厂.其代码如下 function( window, noGlobal ...
- jquery源码学习笔记二:jQuery工厂
笔记一里记录,jQuery的总体结构如下: (function( global, factory ) { //调用factory(工厂)生成jQuery实例 factory( global ); }( ...
- 菜鸟的jQuery源码学习笔记(前言)
前言 相信任何一名前端开发人员或者是前端爱好者都对jQuery不陌生.jQuery简单易用,功能强大,特别是拥有良好的浏览器兼容性,大大降低了前端开发的难度,使得前端开发变得“平易近人起来”.自从本人 ...
- jquery源码学习笔记(一)jQuery的无new构建
本人是一名.net程序员..... 你一个.net coder 看什么jQuery 源码啊? 原因吗,很简单.技多不压身吗(麻蛋,前端工作好高...羡慕). 我一直都很喜欢JavaScript,废话不 ...
- jQuery源码学习笔记一
学习jQuery源码,我主要是通过妙味视频上学习的.这里将所有的源码分析,还有一些自己弄懂过程中的方法及示例整理出来,供大家参考. 我用的jquery v2.0.3版本. var rootjQuery ...
- jQuery源码学习笔记二
//添加实例属性和方法 jQuery.fn = jQuery.prototype = { // 版本,使用方式:$().jquery弹出当前引入的jquery的版本 jquery: core_vers ...
- jQuery 源码学习笔记
//检测 window 中新增的对象 //first var oldMap = {}; for(var i in window) { oldMap[i] = 1; } //second for(var ...
- 菜鸟的jQuery源码学习笔记(二)
jQuery对象是使用构造函数和原型模式相结合的方式创建的.现在来看看jQuery的原型对象jQuery.prototype: jQuery.fn = jQuery.prototype = { //成 ...
- 菜鸟的jQuery源码学习笔记(三)
each: function(callback, args) { return jQuery.each(this, callback, args); }, each:这个调用了jQuery.each方 ...
随机推荐
- svn上传项目
1.桌面右键单击 2.进行项目导入 3.选择项目所在目录 4.
- 如何用纯 CSS 创作一种文字断开的交互特效
效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/LmjNgL 可交互视频教程 此视 ...
- 夯实Java:从面向对象说起
作者:伯特出处:github.com/ruicbAndroid/LoulanPlan声明:本文出自伯特的<LoulanPlan>,转载务必注明作者及出处. 刚学习 Java 那会就接触了& ...
- Django 动态建表
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Random_lee # -*- coding: utf-8 -*- from django ...
- POJ 2631 Roads in the North (求树的直径)
Description Building and maintaining roads among communities in the far North is an expensive busine ...
- OO第二单元博客
三次作业的设计策略 第一次作业 多线程协同控制 第一次作业只需要两个线程和一个公共缓冲区: 负责读取输入并把它添加进命令队列的线程,即生产者 负责从命令队列中取出命令执行的线程,即消费者 再加上一个缓 ...
- 【02】sass更新的方法
[02]更新的方法 gem install sass **
- 使用inline-box代替float
在网页布局中,使用float有不少好处,可以为你带来更加自由的布局,还可以自动根据浏览器改变布局效果.但是使用多了你也可能发现有一个问题,使用了float之后,外层的div不会撑高,导致布局出现坍塌. ...
- POJ2926-Requirements,曼哈顿距离。去掉绝对值符号暴力枚举所有情况,神薙!
Requirements 好吧,这题我实在想不到什么优化的方法,看了看讨论区,顺便膜拜了一下大 ...
- 【网络流】【待补】C. Heidi and Library (hard)
http://codeforces.com/contest/802/problem/C