练武不练功,到老一场空。计算机也一样。

计算机的功,就是原理。如果程序员只会使用各种函数,各种框架,而不知其原理,顶多熟练工人而已。知其然,更要知其所以然。

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源码学习笔记一:总体结构的更多相关文章

  1. jquery源码学习笔记三:jQuery工厂剖析

    jquery源码学习笔记二:jQuery工厂 jquery源码学习笔记一:总体结构 上两篇说过,query的核心是一个jQuery工厂.其代码如下 function( window, noGlobal ...

  2. jquery源码学习笔记二:jQuery工厂

    笔记一里记录,jQuery的总体结构如下: (function( global, factory ) { //调用factory(工厂)生成jQuery实例 factory( global ); }( ...

  3. 菜鸟的jQuery源码学习笔记(前言)

    前言 相信任何一名前端开发人员或者是前端爱好者都对jQuery不陌生.jQuery简单易用,功能强大,特别是拥有良好的浏览器兼容性,大大降低了前端开发的难度,使得前端开发变得“平易近人起来”.自从本人 ...

  4. jquery源码学习笔记(一)jQuery的无new构建

    本人是一名.net程序员..... 你一个.net coder 看什么jQuery 源码啊? 原因吗,很简单.技多不压身吗(麻蛋,前端工作好高...羡慕). 我一直都很喜欢JavaScript,废话不 ...

  5. jQuery源码学习笔记一

    学习jQuery源码,我主要是通过妙味视频上学习的.这里将所有的源码分析,还有一些自己弄懂过程中的方法及示例整理出来,供大家参考. 我用的jquery v2.0.3版本. var rootjQuery ...

  6. jQuery源码学习笔记二

    //添加实例属性和方法 jQuery.fn = jQuery.prototype = { // 版本,使用方式:$().jquery弹出当前引入的jquery的版本 jquery: core_vers ...

  7. jQuery 源码学习笔记

    //检测 window 中新增的对象 //first var oldMap = {}; for(var i in window) { oldMap[i] = 1; } //second for(var ...

  8. 菜鸟的jQuery源码学习笔记(二)

    jQuery对象是使用构造函数和原型模式相结合的方式创建的.现在来看看jQuery的原型对象jQuery.prototype: jQuery.fn = jQuery.prototype = { //成 ...

  9. 菜鸟的jQuery源码学习笔记(三)

    each: function(callback, args) { return jQuery.each(this, callback, args); }, each:这个调用了jQuery.each方 ...

随机推荐

  1. svn上传项目

    1.桌面右键单击 2.进行项目导入 3.选择项目所在目录 4.

  2. 如何用纯 CSS 创作一种文字断开的交互特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/LmjNgL 可交互视频教程 此视 ...

  3. 夯实Java:从面向对象说起

    作者:伯特出处:github.com/ruicbAndroid/LoulanPlan声明:本文出自伯特的<LoulanPlan>,转载务必注明作者及出处. 刚学习 Java 那会就接触了& ...

  4. Django 动态建表

    #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Random_lee # -*- coding: utf-8 -*- from django ...

  5. POJ 2631 Roads in the North (求树的直径)

    Description Building and maintaining roads among communities in the far North is an expensive busine ...

  6. OO第二单元博客

    三次作业的设计策略 第一次作业 多线程协同控制 第一次作业只需要两个线程和一个公共缓冲区: 负责读取输入并把它添加进命令队列的线程,即生产者 负责从命令队列中取出命令执行的线程,即消费者 再加上一个缓 ...

  7. 【02】sass更新的方法

    [02]更新的方法   gem install sass         **

  8. 使用inline-box代替float

    在网页布局中,使用float有不少好处,可以为你带来更加自由的布局,还可以自动根据浏览器改变布局效果.但是使用多了你也可能发现有一个问题,使用了float之后,外层的div不会撑高,导致布局出现坍塌. ...

  9. POJ2926-Requirements,曼哈顿距离。去掉绝对值符号暴力枚举所有情况,神薙!

                                                         Requirements 好吧,这题我实在想不到什么优化的方法,看了看讨论区,顺便膜拜了一下大 ...

  10. 【网络流】【待补】C. Heidi and Library (hard)

    http://codeforces.com/contest/802/problem/C