jQuery是面向对象的设计
通过window.$ = window.jQuery = $; 向外提供接口,将$挂在window下,外部就可以使用$和jQuery

$("#div1").css()   //$("#div1")是jQuery的一个实例对象,css()是实例的方法【实例的方法只能jQuery对象使用】
$("#div1").html()

$.trim()
$.proxy()      //工具方法,相当于静态方法,【jQuery对象和原生js对象都可以使用】

(function(window , undefined){
【1】jQuery源码采取闭包形式(匿名函数自执行),好处是里面的代码都是局部的,不会与外部冲突

【2】为什么要传入window?
1、根据函数作用域链,若没有传入window,就会一层一层向上查找window,而window对象是 最顶层的对象,查找速度就会非常慢,传入后,只需要查找参数即可
2、便于压缩,可以用w参数代表window对象,所有用到window的都是w,节约空间

【3】为什么传入undefined?
在某些浏览器版本中undefined可以被修改
var undefined = 10;
alert(undefined); //IE10弹出undefined,IE7 8弹出10
为防止undefined被修改,这里传入undefined,jQuery首先找到的是参数中传入的undefined,不会找到外层或被修改的undefined

【4】   <script>
        "use strict" //严格模式不允许 a = 10 ; var num = 010 不规范的写法  一般不推荐使用严格模式
     </script>

【5】jQuery(document)可以直接使用,但是jQuery将每一个对象都赋值给了一个变量

    var rootJQuery = jQuery(document)这样做的原因:  jQuery(document)不可被压缩成一个字符,而rootJQuery可以

【6】 判断是不是undefined: window.a == undefined;    typeof window.a == 'undefined' 用这个兼容IE6 7 8 9
})(window);

基本的面向对象的编程
function Aaa(){     //会自动生成Aaa.prototype.constructor = Aaa
}
Aaa.prototype.init = function(){};
Aaa.prototype.css = function(){};
var a1 = new Aaa();
a1.init();
a1.css();

两种为原型添加属性的方式比较:

一:
Aaa.prototype.name = 'zz';
Aaa.prototype.age = '18'
alert( a1.constructor ); //function Aaa(){}

二:

//prototype被覆盖,其中的constructor : Aaa不再了,所以{}形式需要在里面加上constructor : Aaa,否则constructor是空的Object

Aaa.prototype = {name : 'zz',age : '18'};   
alert( a1.constructor ); //Object(){}

jQuery的设计思想:可以实现$().css()方式编程的原理
function jQuery(){
return new jQuery.prototype.init();
}
jQuery.prototype.init = function(){};
jQuery.prototype.css = function(){};
jQuery.prototype.init.prototype = jQuery.prototype;   //对象的引用关系,对象的原型是一个对象

Jquery源码学习(第一天)的更多相关文章

  1. jquery源码学习第一天

    第一天认识了jquery的大体结构,总的大范围是 (function() { // 这里是封装的代码,包括了各种方法.工具 window.JQuery = JQuery window.$ = $; } ...

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

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

  3. jquery源码学习(一)——jquery结构概述以及如何合适的暴露全局变量

    jQuery 源码学习是对js的能力提升很有帮助的一个方法,废话不说,我们来开始学习啦 我们学习的源码是jquery-2.0.3已经不支持IE6,7,8了,因为可以少学很多hack和兼容的方法. jq ...

  4. jquery 源码学习(一)

    从上边的注释看,jQuery的源码结构相当清晰.条理,不像代码那般晦涩和让人纠结   1. 总体架构 1.1 自调用匿名函数 self-invoking anonymous function 打开jQ ...

  5. jQuery源码学习笔记一

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

  6. jquery 源码学习(四)构造jQuery对象-工具函数

    jQuery源码分析-03构造jQuery对象-工具函数,需要的朋友可以参考下.   作者:nuysoft/高云 QQ:47214707 EMail:nuysoft@gmail.com 声明:本文为原 ...

  7. jQuery源码学习感想

    还记得去年(2015)九月份的时候,作为一个大四的学生去参加美团霸面,结果被美团技术总监教育了一番,那次问了我很多jQuery源码的知识点,以前虽然喜欢研究框架,但水平还不足够来研究jQuery源码, ...

  8. 读艾伦的jQuery的无new构建,疑惑分析——jquery源码学习一

    背景: 有心学习jquery源码,苦于自己水平有限,若自己研究,耗时耗力,且读懂之日无期. 所以,网上寻找高手的源码分析.再经过自己思考,整理,验证.以求有所收获. 此篇为读高手艾伦<jQuer ...

  9. jquery 源码学习(*)

    最近在做日志统计程序,发现对方的程序是在Jquery基础上进行开发的,而公司的网站的框架是prototype.而且我也早就想了解一下Jquery源码,故决定研究Jquery源码,模拟它的方法   Jq ...

随机推荐

  1. Java多线程与静态方法

    Java无基础开发Android应用,发现对静态方法理解不够,有如下问题: 在多线程中使用静态方法会发生什么事?也就是说多线程访问同一个类的static静态方法会发生什么事?是否会发生线程安全问题? ...

  2. jsf组件对应表

    组件 标签 说明 UIForm form 表示 HTML表单元素 UIInput InputText 单行文本输入控件   inputTextarea 多行文本输入控件   InputSecret 密 ...

  3. spfa模板

    通过stl的queue实现的spfa(vector实现邻接表存图) 本模板没有考虑存在两点不连通的情况 如果需要判断则需要用到并查集或者遍历整个邻接表 #include<iostream> ...

  4. 使用简介<EntityFramework6.0>

    序言 在这一篇中,我们将演示EnitityFramework基本的建模[建模也是EntityFramework最核心的特性]范例,例如实体的分离和继承等.我们开始了演示如何创建一个简单的概念模型的例子 ...

  5. 14.linux按键驱动程序(一)

    按键驱动程序 本文学习主要包含按键硬件的实现.中断分层管理.按键定时器去抖.阻塞性驱动程序设计.这里面需要使用到混杂设备驱动和中断处理程序的内容. 一.创建按键混杂设备驱动模型 int key_ope ...

  6. UWP学习记录12-应用到应用的通信

    UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...

  7. 解决EditText和ScrollView滑动冲突问题

    该类需要调用 OnTouchListener接口 黄色部分是需要更改部分,改为自己的edittext@Override public boolean onTouch(View view, Motion ...

  8. pyqt的信号槽机制(转)

    PySide/PyQt Tutorial: Creating Your Own Signals and Slots This article is part 5 of 8 in the series  ...

  9. LINUX 常用命令 ps 详解

    ps常用命令 ps -u ceshi 查看特定用户(ceshi)进程的情况 ps aux | grep nginx 查找nginx的进程 pa -ef | grep nginx 查找nginx的进程 ...

  10. 转:学习笔记: Delphi之线程类TThread

    学习笔记: Delphi之线程类TThread - 5207 - 博客园http://www.cnblogs.com/5207/p/4426074.html 新的公司接手的第一份工作就是一个多线程计算 ...