(function(window){})(window)

为什么要传window给jquery当参数呢?

1.为了压缩有 引用

2.加速变量的寻找,当找window对象的时候,默认从本级开始寻找,一级级往上到最高层。

window.a==undefined

typeof window.a "undefined" 理论上两种都行,但是在老版本的IE中上种可能不行

传统的js的面向对象构建方式

function A(){}

A.prototype.init=function(){}

A.prototype.css=function(){}

使用:

var a=new A();

a.init();

a.css();

是否很麻烦

jQuery的做法:

function jQuery(){

  return new jQuery.prototype.init();

}

jQuery.prototype.init=function(){}

jQuery.prototype.css=function(){}

jQuery.prototype.init.prototype=jQuery.prototype;//很巧妙,prototype首先是对象,也是型构造函数的原型

使用:

jQuery().css(); 直接省略了两步,被初始化了的

constructor属性,当创建一个js对象的时候,该对象自动有个 constructor属性,该属性就是构造方法

function A(){}

A.prototype.constructor=A;

当var a=new A()的时候,上面这句话自动会赋予的

可以 alert(a.constructor);试试

为什么在 jQuery中 jQuery.fn=jQuery.prototype={......,constructior:jQuery,....}

这一句呢,不是说会自动添加上的么?

首先

function A(){}

A.prototype.name='ww'

A.prototype.age='11'

var a=new A();

alert(a.constructor);//打印出function A(){}

然后 function A(){}

A.prototype={name:'ww',age:'11'}

var a=new A();

alert(a.constructor)//打印出 function Object(){[native object]}

这是因为 第一种 是附加属性 不会影响 构造对象constructor

第二种是 = ,赋予属性而 json格式的 是一个大对象,所以 constructor对象被赋予 object了

写了那句话之后是为了修正,修正为函数形式的。

$("li") 转成的格式为

this:{0:li,1:li,2:li,length}

$.parseHTML()用于实现以上功能转成以上string

$.merge()  合并数组,也可以合并json(但是这个json是key是0,1等的。。。)。 把数组转换成 json

var str="<li>1</li><li>2</li><li>3</li><script>alert(4)<\/script>"

$.parseHTML(str,document,true);//返回数组,每个对象都是一个标签对象['li','li','li','script']

var arr={

  0:'a',

  1:'b'

  length:2}

vr arr2={'c','d'}

$.merge(arr,arr1)    ->{0:'a',1:'b',2:'c',3:'d',length:4}形式的json格式了。

$.makeArray() 生成数组

var div=$("div")

$.makeArray(div)生成 div的数组

$.makeArray()

深拷贝与浅拷贝

var a={}

var b={name:{age:30}}

a.name.age=20

$.extend(a,b)

alert(b.name.age)   打印出20    浅拷贝

$.extend(true,a,b)

a.name.age=20;

allert(b.name.age) 打印出30深拷贝,不同对象

jQuery部分源码帮助理解的更多相关文章

  1. 深入分析,理解jQuery.Deferred源码

    前言: 如果你对jQuery.Callback回调对象不了解,或者只掌握其方法,但是没有通过阅读源码理解,可以先阅读 前一章jQuery.Callbacks源码解读二,因为只有完全理解jQuery.C ...

  2. 【深入浅出jQuery】源码浅析--整体架构

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  3. 【深入浅出jQuery】源码浅析2--奇技淫巧

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  4. jQuery.Callbacks 源码解读二

    一.参数标记 /* * once: 确保回调列表仅只fire一次 * unique: 在执行add操作中,确保回调列表中不存在重复的回调 * stopOnFalse: 当执行回调返回值为false,则 ...

  5. 【深入浅出jQuery】源码浅析2--使用技巧

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  6. 【学】jQuery的源码思路1——后代选择器

    jQuery的源码思路1--后代选择器 这里探讨一下jQuery中后代选择器的封装原理,并自己写一下 getEle('#div1 ul li .box');接受的参数就是个后代选择器,类似于这样: # ...

  7. (转)【深入浅出jQuery】源码浅析2--奇技淫巧

    [深入浅出jQuery]源码浅析2--奇技淫巧 http://www.cnblogs.com/coco1s/p/5303041.html

  8. storm源码之理解Storm中Worker、Executor、Task关系 + 并发度详解

    本文导读: 1 Worker.Executor.task详解 2 配置拓扑的并发度 3 拓扑示例 4 动态配置拓扑并发度 Worker.Executor.Task详解: Storm在集群上运行一个To ...

  9. jQuery.attributes源码分析(attr/prop/val/class)

    回顾 有了之前的几篇对于jQuery.attributes相关的研究,是时候分析jQuery.attr的源码了 Javascript中的attribute和property分析 attribute和p ...

随机推荐

  1. java的nio之:java的nio系列教程之serverSocketChannel

    Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样.ServerSocketChannel类在 jav ...

  2. DuiLib——xml配置项

    DUILibxml配置项 根节点 子类 属性 类型 Window  |--------Image 图片信息 | o------name string | o------restype string | ...

  3. MFC中使用Duilib--2

    在上一篇文章"MFC中使用Duilib--1"中, 没有用到资源文件,即xml,本篇讲怎样加载文件. 1.  在exe输出目录下,创建一个skin目录,里面放入需要用到的图片文件, ...

  4. 论文笔记之:Fully-Convolutional Siamese Networks for Object Tracking

    gansh Fully-Convolutional Siamese Network for Object Tracking 摘要:任意目标的跟踪问题通常是根据一个物体的外观来构建表观模型.虽然也取得了 ...

  5. InvokeRequired和Invoke

    C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它.此时它将会在内部调用ne ...

  6. 在Hyper-V虚拟机中使用Wi-Fi上网

    笔记本配置了一块以太网卡和一块无线网卡.由于平时常用Wi-Fi上网,偶然发现Hyper-V虚拟机默认不能使用宿主系统的无线网卡上网,据说是出于安全方面的考虑.后来参考"Using Wirel ...

  7. Java 实现任意N阶幻方的构造

    一.关于单偶数阶幻方和双偶数阶幻方 (一)单偶数阶幻方(即当n=4k+2时) 任何4k+2 阶幻方都可由2k+1阶幻方与2×2方块复合而成,6是此类型的最小阶. 以6阶为例,可由3阶幻方与由0,1,2 ...

  8. 【转】asp.net导出数据到Excel的三种方法

    来源:http://www.cnblogs.com/lishengpeng1982/archive/2008/04/03/1135490.html 原文出处:http://blog.csdn.net/ ...

  9. java中的堆、栈、常量池以及String类型的两种声明

    参考自http://blog.sina.com.cn/s/blog_798b04f90100ta67.html http://www.cnblogs.com/fguozhu/articles/2661 ...

  10. Spark(一): 基本架构及原理

    Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一,与Hadoop和St ...